summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Dedecker2019-01-11 09:25:12 +0000
committerHans Dedecker2019-01-11 09:31:11 +0000
commitce83a23b16dadd567babf74b2f8164cfcd327a58 (patch)
tree560b882325e2021b2d9b0b5296241440777bd934
parentb079733bee3a616c765383be35656693627716be (diff)
downloadodhcp6c-ce83a23b16dadd567babf74b2f8164cfcd327a58.tar.gz
dhcpv6: avoid parsing unncessary IAs
Don't parse IA_NA/IA_PD options if either na_mode or pd_mode is set to IA_MODE_NONE Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
-rw-r--r--src/dhcpv6.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/dhcpv6.c b/src/dhcpv6.c
index 857cbe1..5378010 100644
--- a/src/dhcpv6.c
+++ b/src/dhcpv6.c
@@ -862,7 +862,8 @@ static int dhcpv6_handle_advert(enum dhcpv6_msg orig, const int rc,
dhcpv6_for_each_option(opt, end, otype, olen, odata) {
if (orig == DHCPV6_MSG_SOLICIT &&
- (otype == DHCPV6_OPT_IA_PD || otype == DHCPV6_OPT_IA_NA) &&
+ ((otype == DHCPV6_OPT_IA_PD && pd_mode != IA_MODE_NONE) ||
+ (otype == DHCPV6_OPT_IA_NA && na_mode != IA_MODE_NONE)) &&
olen > -4 + sizeof(struct dhcpv6_ia_hdr)) {
struct dhcpv6_ia_hdr *ia_hdr = (void*)(&odata[-4]);
dhcpv6_parse_ia(ia_hdr, odata + olen + sizeof(*ia_hdr));