Skip to content
Snippets Groups Projects
Commit 4b2159d1 authored by root's avatar root
Browse files

appliance_setup: fix some 8888 bugs

parent 9cb2b133
No related branches found
No related tags found
No related merge requests found
...@@ -225,16 +225,17 @@ import re ...@@ -225,16 +225,17 @@ import re
class Ether8888Packet: class Ether8888Packet:
ethHeaderFmt = "!6s6sH" ethHeaderFmt = "!6s6sH"
headerFmt = "<2s2s2sHH" headerFmt = "<2s2s2sHH"
localAddr="\x00\x00\x00\x00\x00\x00" localAddr="\0\0\0\0\0\0"
remoteAddr="\xff\xff\xff\xff\xff\xff" remoteAddr="\xff\xff\xff\xff\xff\xff"
proto = 0x8888 proto = 0x8888
zero = "\0\0"
def __init__ (self, localAddr="\x00\x00\x00\x00\x00\x00", remoteAddr="\xff\xff\xff\xff\xff\xff", proto=0x8888): def __init__ (self, localAddr="\x00\x00\x00\x00\x00\x00", remoteAddr="\xff\xff\xff\xff\xff\xff", proto=0x8888):
self.proto = proto self.proto = proto
self.localAddr = localAddr self.localAddr = localAddr
self.remoteAddr = remoteAddr self.remoteAddr = remoteAddr
def decode (self, data): 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: if self.proto != 0x8888:
# FIXME: Error message about invalid packet # FIXME: Error message about invalid packet
return False return False
...@@ -250,7 +251,9 @@ class Ether8888Packet: ...@@ -250,7 +251,9 @@ class Ether8888Packet:
def encode (self, cmd, unknown, nrPackets, dataLen, data): def encode (self, cmd, unknown, nrPackets, dataLen, data):
# Ethernet II header # 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, d += struct.pack (self.headerFmt, self.cmd, self.unknown, self.zero,
self.nrPackets, self.dataLen) self.nrPackets, self.dataLen)
d += data d += data
...@@ -296,9 +299,9 @@ class Ether8888DeviceFactory (DeviceFactory): ...@@ -296,9 +299,9 @@ class Ether8888DeviceFactory (DeviceFactory):
for sock in sread: for sock in sread:
rxFrame = sock.recv (1500) rxFrame = sock.recv (1500)
pack = Ether8888Packet() 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() 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: for s in sockets:
s.close (); s.close ();
...@@ -365,7 +368,7 @@ class Ether8888Device (Device): ...@@ -365,7 +368,7 @@ class Ether8888Device (Device):
def bulk_data_write (self, data, length): def bulk_data_write (self, data, length):
packet = Ether8888Packet (localAddr = self.localAddr, remoteAddr = self.remoteAddr) 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) self.ui.debug ("Request: " + request)
res = None res = None
try: try:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment