diff --git a/appliance_setup/device_types.py b/appliance_setup/device_types.py index ef7596c311c1c8c06f0485a31fbcb1ebf9791f3c..3886f6b2422464782de27486cf063994b868c696 100755 --- a/appliance_setup/device_types.py +++ b/appliance_setup/device_types.py @@ -225,16 +225,17 @@ import re class Ether8888Packet: ethHeaderFmt = "!6s6sH" headerFmt = "<2s2s2sHH" - localAddr="\x00\x00\x00\x00\x00\x00" + localAddr="\0\0\0\0\0\0" remoteAddr="\xff\xff\xff\xff\xff\xff" proto = 0x8888 + zero = "\0\0" def __init__ (self, localAddr="\x00\x00\x00\x00\x00\x00", remoteAddr="\xff\xff\xff\xff\xff\xff", proto=0x8888): self.proto = proto self.localAddr = localAddr self.remoteAddr = remoteAddr def decode (self, data): - self.dstAddr, self.srcAddr, self.proto = struct.unpack(self.ethHeaderFmt,data[:14]) + self.localAddr, self.remoteAddr, self.proto = struct.unpack(self.ethHeaderFmt,data[:14]) if self.proto != 0x8888: # FIXME: Error message about invalid packet return False @@ -250,7 +251,9 @@ class Ether8888Packet: def encode (self, cmd, unknown, nrPackets, dataLen, data): # Ethernet II header - d = struct.pack(self.ethHeaderFmt, self.dstAddr, self.srcAddr, self.proto) + (self.cmd, self.unknown, self.nrPackets, self.dataLen,self.payload) = (cmd, unknown, nrPackets, dataLen, data) + + d = struct.pack(self.ethHeaderFmt, self.remoteAddr, self.localAddr, self.proto) d += struct.pack (self.headerFmt, self.cmd, self.unknown, self.zero, self.nrPackets, self.dataLen) d += data @@ -296,9 +299,9 @@ class Ether8888DeviceFactory (DeviceFactory): for sock in sread: rxFrame = sock.recv (1500) pack = Ether8888Packet() - if pack.decode (rxFrame) and (not pack.dstAddr == bcAddr): + if pack.decode (rxFrame) and (not pack.remoteAddr == bcAddr): ifName,ifProto,pktType,hwType,hwAddr = sock.getsockname() - devices.append (Ether8888Device (ui, ifName, ifProto, pack.srcAddr, "Vonets VAP11G wireless bridge")); + devices.append (Ether8888Device (ui, ifName, ifProto, pack.localAddr, "Vonets VAP11G wireless bridge")); for s in sockets: s.close (); @@ -365,7 +368,7 @@ class Ether8888Device (Device): def bulk_data_write (self, data, length): packet = Ether8888Packet (localAddr = self.localAddr, remoteAddr = self.remoteAddr) - request = packet.encode ("\x01\x01", "\0\0", "\0\0", 0, length, data) + request = packet.encode ("\x01\x01", "\0\0", 0, length, data) self.ui.debug ("Request: " + request) res = None try: