radius: Add tagged VLAN parsing
1. Add tagged VLAN to struct vlan_description (compile limited number of tagged VLANs per description) For k tagged VLANs, the first k entries in vlan_description.tagged are used. They are sorted in ascending order. All other entries are zero. This way os_memcmp() can find identical configurations. 2. Let tagged VLANs be parsed from RADIUS Access-Accept 3. Print VLAN %d+ with %d=untagged VID if tagged VLANs are set 4. Select an unused vlan_id > 4096 for new tagged VLAN configurations 5. Add EGRESS_VLAN RADIUS attribute parsing also for untagged VLANs Signed-off-by: Michael Braun <michael-dev@fami-braun.de>
This commit is contained in:
parent
1889af2e0f
commit
8e44c192da
9 changed files with 129 additions and 29 deletions
|
@ -80,6 +80,7 @@ enum { RADIUS_ATTR_USER_NAME = 1,
|
|||
RADIUS_ATTR_ACCT_INPUT_GIGAWORDS = 52,
|
||||
RADIUS_ATTR_ACCT_OUTPUT_GIGAWORDS = 53,
|
||||
RADIUS_ATTR_EVENT_TIMESTAMP = 55,
|
||||
RADIUS_ATTR_EGRESS_VLANID = 56,
|
||||
RADIUS_ATTR_NAS_PORT_TYPE = 61,
|
||||
RADIUS_ATTR_TUNNEL_TYPE = 64,
|
||||
RADIUS_ATTR_TUNNEL_MEDIUM_TYPE = 65,
|
||||
|
@ -274,7 +275,8 @@ radius_msg_add_attr_user_password(struct radius_msg *msg,
|
|||
const u8 *data, size_t data_len,
|
||||
const u8 *secret, size_t secret_len);
|
||||
int radius_msg_get_attr(struct radius_msg *msg, u8 type, u8 *buf, size_t len);
|
||||
int radius_msg_get_vlanid(struct radius_msg *msg);
|
||||
int radius_msg_get_vlanid(struct radius_msg *msg, int *untagged, int numtagged,
|
||||
int *tagged);
|
||||
char * radius_msg_get_tunnel_password(struct radius_msg *msg, int *keylen,
|
||||
const u8 *secret, size_t secret_len,
|
||||
struct radius_msg *sent_msg, size_t n);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue