aboutsummaryrefslogtreecommitdiffstats
path: root/ggsn
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-12-03 21:43:50 +0100
committerHarald Welte <laforge@gnumonks.org>2017-12-05 17:29:24 +0000
commitbcab7fb4afcd5c9015f05ce1cce02f9a76928217 (patch)
tree3e8b113d2fc7412bc747ea82273901c3139bce0b /ggsn
parent427699e6ebcf2f9e3f05198fb1f5afbd408d389e (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
Diffstat (limited to 'ggsn')
-rw-r--r--ggsn/ggsn.c4
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 */