X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/e98fe681743394f8a5c1434d1909b202eac9ad0a..8d94f2020d372385156e9618d6279ba964ba8870:/icmp.c diff --git a/icmp.c b/icmp.c index 0d6c65e..d2f53e0 100644 --- a/icmp.c +++ b/icmp.c @@ -143,7 +143,13 @@ void send_ipv6_ra(sessionidt s, tunnelidt t, struct in6_addr *ip) pinfo->nd_opt_pi_preferred_time = htonl(604800); pinfo->nd_opt_pi_reserved2 = 0; pinfo->nd_opt_pi_prefix_len = 64; // prefix length - pinfo->nd_opt_pi_prefix = config->ipv6_prefix; + if (session[s].ipv6address.s6_addr[0]) + { + // MSB 64bits of assigned IPv6 address to user (see radius attribut Framed-IPv6-Address) + memcpy(&pinfo->nd_opt_pi_prefix, &session[s].ipv6address.s6_addr[0], 8); + } + else + pinfo->nd_opt_pi_prefix = config->ipv6_prefix; // // Length of payload (not header) p_ip6_hdr->ip6_plen = htons(sizeof(*pinfo) + sizeof(*p_nra));