ip: reassembly-separate feature and custom code

This change is made fix a crash, because is_feature flag semantics turn
out to be different from "custom app code" semantics. Introduce a flag
which custom plugins/apps can use to instead of tying that code to
is_feature flag.

Change-Id: Ief5898711e68529f9306cfac54c4dc9b3650f9e3
Ticket: N/A
Type: fix
Fixes: 21aa8f1022590b8b5caf819b4bbd485de0f1dfe5
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Signed-off-by: Ole Troan <ot@cisco.com>
diff --git a/test/test_ip6.py b/test/test_ip6.py
index b64dbc1..4f267b8 100644
--- a/test/test_ip6.py
+++ b/test/test_ip6.py
@@ -359,6 +359,24 @@
                             "Interface %s: Packet expected from interface %s "
                             "didn't arrive" % (dst_if.name, i.name))
 
+    def test_next_header_anomaly(self):
+        """ IPv6 next header anomaly test
+
+        Test scenario:
+            - ipv6 next header field = Fragment Header (44)
+            - next header is ICMPv6 Echo Request
+            - wait for reassembly
+        """
+        pkt = (Ether(src=self.pg0.local_mac, dst=self.pg0.remote_mac) /
+               IPv6(src=self.pg0.remote_ip6, dst=self.pg0.local_ip6, nh=44) /
+               ICMPv6EchoRequest())
+
+        self.pg0.add_stream(pkt)
+        self.pg_start()
+
+        # wait for reassembly
+        self.sleep(10)
+
     def test_fib(self):
         """ IPv6 FIB test