diff options
author | Vladislav Grishenko <themiron@mail.ru> | 2016-05-12 20:56:16 +0500 |
---|---|---|
committer | Vladislav Grishenko <themiron@mail.ru> | 2017-12-05 00:39:05 +0500 |
commit | 2aa6aeaca2691403e52ea007d3574cb7f662b0e7 (patch) | |
tree | f4543f105b1c9f38ed511ac7b87bcb66bd56bb97 /accel-pppd | |
parent | 7fc3d1044d3a46903dac0acd96b4e1c50602b309 (diff) | |
download | accel-ppp-2aa6aeaca2691403e52ea007d3574cb7f662b0e7.tar.gz accel-ppp-2aa6aeaca2691403e52ea007d3574cb7f662b0e7.zip |
ipv6: nd: fix interface id addresses generation for prefixes > /64
Diffstat (limited to 'accel-pppd')
-rw-r--r-- | accel-pppd/extra/pppd_compat.c | 2 | ||||
-rw-r--r-- | accel-pppd/ifcfg.c | 2 | ||||
-rw-r--r-- | accel-pppd/ipv6/dhcpv6.c | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/accel-pppd/extra/pppd_compat.c b/accel-pppd/extra/pppd_compat.c index 58581899..0ed88368 100644 --- a/accel-pppd/extra/pppd_compat.c +++ b/accel-pppd/extra/pppd_compat.c @@ -582,7 +582,7 @@ static void build_addr(struct ipv6db_addr_t *a, uint64_t intf_id, struct in6_add if (a->prefix_len <= 64) *(uint64_t *)(addr->s6_addr + 8) = intf_id; else - *(uint64_t *)(addr->s6_addr + 8) |= intf_id & ((1 << (128 - a->prefix_len)) - 1); + *(uint64_t *)(addr->s6_addr + 8) |= intf_id & htobe64((1 << (128 - a->prefix_len)) - 1); } static void fill_env(char **env, char *mem, struct pppd_compat_pd *pd) diff --git a/accel-pppd/ifcfg.c b/accel-pppd/ifcfg.c index 030b7438..b2cb0db3 100644 --- a/accel-pppd/ifcfg.c +++ b/accel-pppd/ifcfg.c @@ -52,7 +52,7 @@ static void devconf(struct ap_session *ses, const char *attr, const char *val) if (a->prefix_len <= 64) *(uint64_t *)(addr->s6_addr + 8) = intf_id; else - *(uint64_t *)(addr->s6_addr + 8) |= intf_id & ((1 << (128 - a->prefix_len)) - 1); + *(uint64_t *)(addr->s6_addr + 8) |= intf_id & htobe64((1 << (128 - a->prefix_len)) - 1); }*/ void ap_session_ifup(struct ap_session *ses) diff --git a/accel-pppd/ipv6/dhcpv6.c b/accel-pppd/ipv6/dhcpv6.c index 9c31507a..d99165c6 100644 --- a/accel-pppd/ipv6/dhcpv6.c +++ b/accel-pppd/ipv6/dhcpv6.c @@ -169,7 +169,7 @@ static void build_addr(struct ipv6db_addr_t *a, uint64_t intf_id, struct in6_add if (a->prefix_len <= 64) *(uint64_t *)(addr->s6_addr + 8) = intf_id; else - *(uint64_t *)(addr->s6_addr + 8) |= intf_id & ((1 << (128 - a->prefix_len)) - 1); + *(uint64_t *)(addr->s6_addr + 8) |= intf_id & htobe64((1 << (128 - a->prefix_len)) - 1); } static void insert_dp_routes(struct ap_session *ses, struct dhcpv6_pd *pd) |