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: