From bc9a1059515c567923b5b16d8fc074631e89b0a5 Mon Sep 17 00:00:00 2001
From: Phil <phil@secdev.org>
Date: Sun, 1 Feb 2009 20:05:28 +0100
Subject: [PATCH] Added management of ICMP address mask request/reply

---
 scapy/layers/inet.py | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/scapy/layers/inet.py b/scapy/layers/inet.py
index 1eb02370..ac61d4f5 100644
--- a/scapy/layers/inet.py
+++ b/scapy/layers/inet.py
@@ -379,15 +379,17 @@ class ICMP(Packet):
     fields_desc = [ ByteEnumField("type",8, icmptypes),
                     ByteField("code",0),
                     XShortField("chksum", None),
-                    ConditionalField(XShortField("id",0),  lambda pkt:pkt.type in [0,8,13,14,15,16]),
-                    ConditionalField(XShortField("seq",0), lambda pkt:pkt.type in [0,8,13,14,15,16]),
+                    ConditionalField(XShortField("id",0),  lambda pkt:pkt.type in [0,8,13,14,15,16,17,18]),
+                    ConditionalField(XShortField("seq",0), lambda pkt:pkt.type in [0,8,13,14,15,16,17,18]),
                     ConditionalField(ICMPTimeStampField("ts_ori", None), lambda pkt:pkt.type in [13,14]),
                     ConditionalField(ICMPTimeStampField("ts_rx", None), lambda pkt:pkt.type in [13,14]),
                     ConditionalField(ICMPTimeStampField("ts_tx", None), lambda pkt:pkt.type in [13,14]),
                     ConditionalField(IPField("gw","0.0.0.0"),  lambda pkt:pkt.type==5),
                     ConditionalField(ByteField("ptr",0),   lambda pkt:pkt.type==12),
                     ConditionalField(X3BytesField("reserved",0), lambda pkt:pkt.type==12),
-                    ConditionalField(IntField("unused",0), lambda pkt:pkt.type not in [0,5,8,12,13,14,15,16]),
+                    ConditionalField(IPField("addr_mask","0.0.0.0"), lambda pkt:pkt.type in [17,18]),
+                    ConditionalField(IntField("unused",0), lambda pkt:pkt.type not in [0,5,8,12,13,14,15,16,17,18]),
+                    
                     ]
     def post_build(self, p, pay):
         p += pay
-- 
GitLab