-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
I am running the same program and address gets returned in Python 3, but with socketextra address is always None.
example with python 3:
import select
import socket
ip = '8.8.8.8'
# icmp echo request packet to 8.8.8.8
packet = b'E\x00\x00T\x00\x00\x00\x00\xff\x01\xab\x99\x00\x00\x00\x00\x08\x08\x08\x08\x08\x00\xa4\xa309\x00\x00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
s.setsockopt(socket.SOL_SOCKET, 29, 1) # SO_TIMESTAMP will send timestamp in a message
s.sendto(packet, (ip, 0))
if select.select([s], [], [], 3)[0]:
print(s.recvmsg(65535, 65535))
output:
$ sudo python3 timestamping.py
(b'E\x00\x00T\x0f\x8f\x00\x006\x01X\xfc\x08\x08\x08\x08\n\x00\x02\x0f\x00\x00\xac\xa309\x00\x00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', [(1, 29, b'\xc8\x04*W\x00\x00\x00\x00`G\x04\x00\x00\x00\x00\x00')], 0, ('8.8.8.8', 0))`
example with python 2 and socketextra:
import select
import socket
import socketextra
ip = '8.8.8.8'
# icmp echo request packet to 8.8.8.8
packet = b'E\x00\x00T\x00\x00\x00\x00\xff\x01\xab\x99\x00\x00\x00\x00\x08\x08\x08\x08\x08\x00\xa4\xa309\x00\x00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
s.setsockopt(socket.SOL_SOCKET, 29, 1) # SO_TIMESTAMP will send timestamp in a message
s.sendto(packet, (ip, 0))
if select.select([s], [], [], 3)[0]:
print(socketextra.recvmsg(s, 65535, 65535))`
output:
$ sudo python2 timestamping.py
('E\x00\x00T\x10y\x00\x006\x01X\x12\x08\x08\x08\x08\n\x00\x02\x0f\x00\x00\xac\xa309\x00\x00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', [(1, 29, '\x03\x05*W\x00\x00\x00\x00K\xe7\x02\x00\x00\x00\x00\x00')], 0, None)
Any idea where is the problem?
Metadata
Metadata
Assignees
Labels
No labels