diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-12-03 21:43:50 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-12-05 17:29:24 +0000 |
commit | bcab7fb4afcd5c9015f05ce1cce02f9a76928217 (patch) | |
tree | 3e8b113d2fc7412bc747ea82273901c3139bce0b | |
parent | 427699e6ebcf2f9e3f05198fb1f5afbd408d389e (diff) |
ggsn.c: Fix byte order of IPCP IPv4 DNS servers
... this probably didn't show up as 8.8.8.8 is dual-endian. doh!
The address was already in network byte order, but msgb_put_u32 "of
course" expects host byte order, ending up the wrong way in the actual
packets :/
Change-Id: Ia4bcac5fcebfc24760432eb66be258a01d78f65f
Closes: OS#2685
-rw-r--r-- | ggsn/ggsn.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index 4b4a01f..1507c96 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -436,13 +436,13 @@ static int build_ipcp_pco(struct msgb *msg, uint8_t id, const struct in46_addr * if (dns1 && dns1->len == 4) { msgb_put_u8(msg, 0x81); /* DNS1 Tag */ msgb_put_u8(msg, 2 + dns1->len);/* DNS1 Length, incl. TL */ - msgb_put_u32(msg, dns1->v4.s_addr); + msgb_put_u32(msg, ntohl(dns1->v4.s_addr)); } if (dns2 && dns2->len == 4) { msgb_put_u8(msg, 0x83); /* DNS2 Tag */ msgb_put_u8(msg, 2 + dns2->len);/* DNS2 Length, incl. TL */ - msgb_put_u32(msg, dns2->v4.s_addr); + msgb_put_u32(msg, ntohl(dns2->v4.s_addr)); } /* patch in length values */ |