File zenoss.patch of Package python-pyip

Index: icmp.py
===================================================================
--- icmp.py.orig
+++ icmp.py
@@ -30,6 +30,7 @@ ICMP_REDIRECT_NET = 0
 ICMP_REDIRECT_HOST = 1
 ICMP_REDIRECT_TOSNET = 2
 ICMP_REDIRECT_TOSHOST = 3
+ICMP_ROUTER_ADVERTISE = 9
 ICMP_ECHO = 8
 ICMP_TIMXCEED = 11
 ICMP_TIMXCEED_INTRANS = 0
@@ -128,14 +129,14 @@ class IdAndSeqPacket(Packet):
     
 
     def _get_icmp_data(self):
-        return struct.pack('HH', self.get_id(), self.get_seq()) + self.get_data()
+        return struct.pack('IH', self.get_id(), self.get_seq()) + self.get_data()
 
     def _disassemble(self, buffer, cksum):
         if len(buffer) < 8:
             raise ValueError, "Invalid ICMP Packet length: %d" % len(buffer)
         
-        (self.__id, self.__seq) = struct.unpack('HH', buffer[4:8])
-        self.__data = buffer[8:]
+        (self.__id, self.__seq) = struct.unpack('IH', buffer[4:10])
+        self.__data = buffer[10:]
         Packet._disassemble(self, buffer, cksum)
 
     def get_id(self): return self.__id
@@ -248,6 +249,8 @@ def disassemble(buffer, cksum=1):
         packet = TimeExceeded(code = code)
     elif type == ICMP_UNREACH:
         packet = Unreachable(code = code)
+    elif type == ICMP_ROUTER_ADVERTISE:
+        packet = Packet(type, code)
     else:
         raise ValueError, "Unrecognized type: %d" % type
     
Index: inetutils.py
===================================================================
--- inetutils.py.orig
+++ inetutils.py
@@ -18,7 +18,10 @@ Simple operations like performing checks
 #from _ip import *
 import array
 import struct
-from socket import htons, ntohs
+from socket import htons, ntohs as _ntohs
+
+def ntohs(x):
+    return _ntohs(x) & 0xffff
 
 def cksum(s):
     if len(s) & 1:
openSUSE Build Service is sponsored by