Closed Lionel-snoopy63 closed 4 years ago
Hi. Can you enable DEBUG traces?
Which kind of DHCP client is it?
Which kind of DHCP client is it?
Client is an EtherNet communication module (this module is installed on a drive to be able to communicate with a PLC). When the module is out the box, bootp protocol is enable.
Hi. Can you enable DEBUG traces?
Yes of course. See below the output. C:\Users\Fxxx\AppData\Local\Programs\Python\Python37\Test_pybootd_20200108>pybootd.py -c C:\Users\Fxxx\AppData\Local\Programs\Python\Python37\Test_pybootd_20200108\pybootd\etc\pybootd.ini -p -d 16:01:24 PXEd[daemons] INFO: pybootd-1.7.1 16:01:24 PXEd[pxed] INFO: Using ifname:{A5E9C4C2-457E-4842-87E8-CF9297BADB4D}, mask:255.255.255.0, net:192.168.1.0, server:192.168.1.58 16:01:24 PXEd[pxed] INFO: Listening to 0.0.0.0:67 16:01:30 PXEd[pxed] INFO: Sender: ('0.0.0.0', 68) on socket ('0.0.0.0', 67) 16:01:30 PXEd[pxed] INFO: PXE UUID not present in request 16:01:30 PXEd[pxed] INFO: 00:0A:86:A2:2F:3E access is authorized, request will be satisfied 16:01:30 PXEd[pxed] INFO: Client needs its address 16:01:30 PXEd[pxed] INFO: Reply to: 192.168.1.255:68 16:01:30 PXEd[pxed] INFO: Offering lease for MAC 00:0A:86:A2:2F:3E: IP 192.168.1.25 16:01:30 PXEd[pxed] INFO: Sender: ('0.0.0.0', 68) on socket ('0.0.0.0', 67) 16:01:30 PXEd[pxed] CRITICAL: Padding overflow Traceback (most recent call last): File "C:\Users\Fxxx\AppData\Local\Programs\Python\Python37\Test_pybootd_20200108\pybootd\pxed.py", line 279, in start self.handle(sock, addr, data) File "C:\Users\Fxxx\AppData\Local\Programs\Python\Python37\Test_pybootd_20200108\pybootd\pxed.py", line 358, in handle options = self.parse_options(tail) File "C:\Users\Fxxx\AppData\Local\Programs\Python\Python37\Test_pybootd_20200108\pybootd\pxed.py", line 297, in parse_options raise ValueError('Padding overflow') ValueError: Padding overflow
16:01:35 PXEd[pxed] INFO: Sender: ('0.0.0.0', 68) on socket ('0.0.0.0', 67) 16:01:35 PXEd[pxed] CRITICAL: Padding overflow Traceback (most recent call last): File "C:\Users\Fxxx\AppData\Local\Programs\Python\Python37\Test_pybootd_20200108\pybootd\pxed.py", line 279, in start self.handle(sock, addr, data) File "C:\Users\Fxxx\AppData\Local\Programs\Python\Python37\Test_pybootd_20200108\pybootd\pxed.py", line 358, in handle options = self.parse_options(tail) File "C:\Users\Fxxx\AppData\Local\Programs\Python\Python37\Test_pybootd_20200108\pybootd\pxed.py", line 297, in parse_options raise ValueError('Padding overflow') ValueError: Padding overflow
Aborting...
C:\Users\Fxxx\AppData\Local\Programs\Python\Python37\Test_pybootd_20200108>
The error would be raised when the DHCP data received from the client is malformed - or there is a bug in pybootd :-)
in handle(self, sock, addr, data)
, add a log trace to dump the received data, such as
def handle(self, sock, addr, data):
self.log.info('Sender: %s on socket %s' % (addr, sock.getsockname()))
self.log.info('DHCP data (%d): %s', len(data), hexlify(data).decode())
# ...
and post the results
The error would be raised when the DHCP data received from the client is malformed - or there is a bug in pybootd :-)
in
handle(self, sock, addr, data)
, add a log trace to dump the received data, such asdef handle(self, sock, addr, data): self.log.info('Sender: %s on socket %s' % (addr, sock.getsockname())) self.log.info('DHCP data (%d): %s', len(data), hexlify(data).decode()) # ...
and post the results
Below the results 18:14:07 PXEd[daemons] INFO: pybootd-1.7.1 18:14:07 PXEd[pxed] INFO: Using ifname:{A5E9C4C2-457E-4842-87E8-CF9297BADB4D}, mask:255.255.255.0, net:192.168.1.0, server:192.168.1.58 18:14:07 PXEd[pxed] INFO: Listening to 0.0.0.0:67 18:14:14 PXEd[pxed] INFO: Sender: ('0.0.0.0', 68) on socket ('0.0.0.0', 67) 18:14:14 PXEd[pxed] INFO: DHCP data (300): 010106002233445a0000800000000000000000000000000000000000000a86a22f3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063825363ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 18:14:14 PXEd[pxed] INFO: PXE UUID not present in request 18:14:14 PXEd[pxed] INFO: 00:0A:86:A2:2F:3E access is authorized, request will be satisfied 18:14:14 PXEd[pxed] INFO: Client needs its address 18:14:14 PXEd[pxed] INFO: Reply to: 192.168.1.255:68 18:14:14 PXEd[pxed] INFO: Offering lease for MAC 00:0A:86:A2:2F:3E: IP 192.168.1.25 18:14:14 PXEd[pxed] INFO: Sender: ('0.0.0.0', 68) on socket ('0.0.0.0', 67) 18:14:14 PXEd[pxed] INFO: DHCP data (548): 010106002233445a0000800000000000000000000000000000000000000a86a22f3e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c24496e7465724e6963686520506f727461626c65205443502f49502c2076302e30426574610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ff638253633501033204c0a801190104ffffff000304c0a8013a33040001518037040103060f3604c0a8013a5106696e69636865000000000000000000340101ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 18:14:14 PXEd[pxed] CRITICAL: Padding overflow Traceback (most recent call last): File "C:\Users\Fxxx\AppData\Local\Programs\Python\Python37\Test_pybootd_20200108\pybootd\pxed.py", line 279, in start self.handle(sock, addr, data) File "C:\Users\Fxxx\AppData\Local\Programs\Python\Python37\Test_pybootd_20200108\pybootd\pxed.py", line 359, in handle options = self.parse_options(tail) File "C:\Users\Fxxx\AppData\Local\Programs\Python\Python37\Test_pybootd_20200108\pybootd\pxed.py", line 297, in parse_options raise ValueError('Padding overflow') ValueError: Padding overflow
Wow, never saw that much (useless) padding.
I’ll check tomorrow this part of the code, even if the client is dumb, pybootd
should be able to cope with it. Thanks for the traces, it helps a lot to understand/reproduce the issue.
Quick update: I've started writing a unit test so I can reproduce this error from the hex data you captured.
I've tested your update and that works well. See the result below for your info. Thanks a lot for your help.
18:02:10 PXEd[daemons] INFO: pybootd-1.7.2 18:02:10 PXEd[pxed] INFO: Using ifname:{A5E9C4C2-457E-4842-87E8-CF9297BADB4D}, mask:255.255.255.0, net:192.168.1.0, server:192.168.1.58 18:02:10 PXEd[pxed] INFO: Listening to 0.0.0.0:67 18:02:19 PXEd[pxed] INFO: Sender: ('0.0.0.0', 68) on socket ('0.0.0.0', 67) 18:02:19 PXEd[pxed] INFO: PXE UUID not present in request 18:02:19 PXEd[pxed] INFO: 00:0A:86:A2:2F:3E access is authorized, request will be satisfied 18:02:19 PXEd[pxed] INFO: Client needs its address 18:02:19 PXEd[pxed] INFO: Reply to: 192.168.1.255:68 18:02:19 PXEd[pxed] INFO: Offering lease for MAC 00:0A:86:A2:2F:3E: IP 192.168.1.25 18:02:19 PXEd[pxed] INFO: Sender: ('0.0.0.0', 68) on socket ('0.0.0.0', 67) 18:02:19 PXEd[pxed] INFO: PXE UUID not present in request 18:02:19 PXEd[pxed] INFO: 00:0A:86:A2:2F:3E access is authorized, request will be satisfied 18:02:19 PXEd[pxed] INFO: Client needs its address 18:02:19 PXEd[pxed] INFO: Lease for MAC 00:0A:86:A2:2F:3E already defined as IP 192.168.1.25 18:02:19 PXEd[pxed] INFO: Reply to: 192.168.1.255:68 18:02:19 PXEd[pxed] INFO: New lease for MAC 00:0A:86:A2:2F:3E: IP 192.168.1.25
Aborting...
Ok thanks for letting me know.
Hello. I need your help because I try to use bootp protocol but each time I get an error message. I've tried to dig inside the code but I don't know how to fix this issue. You will find below the output. Thanks in advance for any help. 17:37:18 PXEd[daemons] INFO: pybootd-1.7.1 <pybootd.util.EasyConfigParser object at 0x000001D904CDE1C8> 17:37:06 PXEd[pxed] INFO: Using ifname:{A5E9C4C2-457E-4842-87E8-CF9297BADB4D}, mask:255.255.255.0, net:192.168.1.0, server:192.168.1.58 17:37:06 PXEd[pxed] INFO: Listening to 0.0.0.0:67 17:37:18 PXEd[pxed] INFO: Sender: ('0.0.0.0', 68) on socket ('0.0.0.0', 67) 17:37:18 PXEd[pxed] INFO: PXE UUID not present in request 17:37:18 PXEd[pxed] INFO: 00:0A:86:A2:2F:3E access is authorized, request will be satisfied 17:37:18 PXEd[pxed] INFO: Client needs its address 17:37:18 PXEd[pxed] INFO: Reply to: 192.168.1.255:68 17:37:18 PXEd[pxed] INFO: Offering lease for MAC 00:0A:86:A2:2F:3E: IP 192.168.1.65 17:37:18 PXEd[pxed] INFO: Sender: ('0.0.0.0', 68) on socket ('0.0.0.0', 67) 17:37:18 PXEd[pxed] CRITICAL: Padding overflow