@@ -1453,15 +1453,12 @@ static enum net_verdict handle_ns_input(struct net_pkt *pkt)
14531453
14541454 net_pkt_set_ipv6_ext_opt_len (pkt , sizeof (struct net_icmpv6_ns_hdr ));
14551455
1456- ret = net_icmpv6_get_nd_opt_hdr (pkt , & nd_opt_hdr );
1457- if (ret < 0 ) {
1458- goto drop ;
1459- }
1460-
14611456 left_len = net_pkt_get_len (pkt ) - (sizeof (struct net_ipv6_hdr ) +
14621457 sizeof (struct net_icmp_hdr ));
14631458
1464- while (net_pkt_ipv6_ext_opt_len (pkt ) < left_len ) {
1459+ ret = net_icmpv6_get_nd_opt_hdr (pkt , & nd_opt_hdr );
1460+
1461+ while (!ret && net_pkt_ipv6_ext_opt_len (pkt ) < left_len ) {
14651462 if (!nd_opt_hdr .len ) {
14661463 break ;
14671464 }
@@ -1506,9 +1503,6 @@ static enum net_verdict handle_ns_input(struct net_pkt *pkt)
15061503 }
15071504
15081505 ret = net_icmpv6_get_nd_opt_hdr (pkt , & nd_opt_hdr );
1509- if (ret < 0 ) {
1510- goto drop ;
1511- }
15121506 }
15131507
15141508 if (IS_ENABLED (CONFIG_NET_ROUTING )) {
@@ -2006,15 +2000,12 @@ static enum net_verdict handle_na_input(struct net_pkt *pkt)
20062000
20072001 net_pkt_set_ipv6_ext_opt_len (pkt , sizeof (struct net_icmpv6_na_hdr ));
20082002
2009- ret = net_icmpv6_get_nd_opt_hdr (pkt , & nd_opt_hdr );
2010- if (ret < 0 ) {
2011- goto drop ;
2012- }
2013-
20142003 left_len = net_pkt_get_len (pkt ) - (sizeof (struct net_ipv6_hdr ) +
20152004 sizeof (struct net_icmp_hdr ));
20162005
2017- while (net_pkt_ipv6_ext_opt_len (pkt ) < left_len ) {
2006+ ret = net_icmpv6_get_nd_opt_hdr (pkt , & nd_opt_hdr );
2007+
2008+ while (!ret && net_pkt_ipv6_ext_opt_len (pkt ) < left_len ) {
20182009 if (!nd_opt_hdr .len ) {
20192010 break ;
20202011 }
@@ -2044,9 +2035,6 @@ static enum net_verdict handle_na_input(struct net_pkt *pkt)
20442035 }
20452036
20462037 ret = net_icmpv6_get_nd_opt_hdr (pkt , & nd_opt_hdr );
2047- if (ret < 0 ) {
2048- goto drop ;
2049- }
20502038 }
20512039
20522040 ifaddr = net_if_ipv6_addr_lookup_by_iface (net_pkt_iface (pkt ),
0 commit comments