Added ability to define up to 5 IPv6 prefix delegation by user
This commit is contained in:
parent
935445b29a
commit
e98fe68174
7 changed files with 400 additions and 53 deletions
36
radius.c
36
radius.c
|
|
@ -533,7 +533,8 @@ void processrad(uint8_t *buf, int len, char socket_index)
|
|||
sessionidt s;
|
||||
tunnelidt t = 0;
|
||||
hasht hash;
|
||||
uint8_t routes = 0;
|
||||
int routes = 0;
|
||||
int routes6 = 0;
|
||||
int r_code;
|
||||
int r_id;
|
||||
int OpentunnelReq = 0;
|
||||
|
|
@ -786,11 +787,17 @@ void processrad(uint8_t *buf, int len, char socket_index)
|
|||
|
||||
if (prefixlen)
|
||||
{
|
||||
LOG(3, s, session[s].tunnel,
|
||||
" Radius reply contains route for %s/%d\n",
|
||||
n, prefixlen);
|
||||
session[s].ipv6route = r6;
|
||||
session[s].ipv6prefixlen = prefixlen;
|
||||
if (routes6 == MAXROUTE6)
|
||||
{
|
||||
LOG(1, s, session[s].tunnel, " Too many IPv6 routes\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG(3, s, session[s].tunnel, " Radius reply contains route for %s/%d\n", n, prefixlen);
|
||||
session[s].route6[routes6].ipv6route = r6;
|
||||
session[s].route6[routes6].ipv6prefixlen = prefixlen;
|
||||
routes6++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (*p == 123)
|
||||
|
|
@ -799,10 +806,19 @@ void processrad(uint8_t *buf, int len, char socket_index)
|
|||
if ((p[1] > 4) && (p[3] > 0) && (p[3] <= 128))
|
||||
{
|
||||
char ipv6addr[INET6_ADDRSTRLEN];
|
||||
memcpy(&session[s].ipv6route, &p[4], p[1] - 4);
|
||||
session[s].ipv6prefixlen = p[3];
|
||||
LOG(3, s, session[s].tunnel, " Radius reply contains Delegated IPv6 Prefix %s/%d\n",
|
||||
inet_ntop(AF_INET6, &session[s].ipv6route, ipv6addr, INET6_ADDRSTRLEN), session[s].ipv6prefixlen);
|
||||
|
||||
if (routes6 == MAXROUTE6)
|
||||
{
|
||||
LOG(1, s, session[s].tunnel, " Too many IPv6 routes\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(&session[s].route6[routes6].ipv6route, &p[4], p[1] - 4);
|
||||
session[s].route6[routes6].ipv6prefixlen = p[3];
|
||||
LOG(3, s, session[s].tunnel, " Radius reply contains Delegated IPv6 Prefix %s/%d\n",
|
||||
inet_ntop(AF_INET6, &session[s].route6[routes6].ipv6route, ipv6addr, INET6_ADDRSTRLEN), session[s].route6[routes6].ipv6prefixlen);
|
||||
routes6++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (*p == 168)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue