File tree Expand file tree Collapse file tree 2 files changed +18
-3
lines changed Expand file tree Collapse file tree 2 files changed +18
-3
lines changed Original file line number Diff line number Diff line change @@ -518,13 +518,18 @@ def _extract_upperaddress(pkt, source=True):
518
518
# https://tools.ietf.org/html/rfc2464#section-4
519
519
return LINK_LOCAL_PREFIX [:8 ] + addr [:3 ] + b"\xff \xfe " + addr [3 :]
520
520
elif type (underlayer ) == Dot15d4Data :
521
- addr = underlayer .src_addr if source else underlayer .dest_addr
521
+ if source :
522
+ addr = underlayer .src_addr
523
+ addrmode = underlayer .underlayer .fcf_srcaddrmode
524
+ else :
525
+ addr = underlayer .dest_addr
526
+ addrmode = underlayer .underlayer .fcf_destaddrmode
522
527
addr = struct .pack (">Q" , addr )
523
- if underlayer . underlayer . fcf_destaddrmode == 3 : # Extended/long
528
+ if addrmode == 3 : # Extended/long
524
529
tmp_ip = LINK_LOCAL_PREFIX [0 :8 ] + addr
525
530
# Turn off the bit 7.
526
531
return tmp_ip [0 :8 ] + struct .pack ("B" , (orb (tmp_ip [8 ]) ^ 0x2 )) + tmp_ip [9 :16 ] # noqa: E501
527
- elif underlayer . underlayer . fcf_destaddrmode == 2 : # Short
532
+ elif addrmode == 2 : # Short
528
533
return (
529
534
LINK_LOCAL_PREFIX [0 :8 ] +
530
535
b"\x00 \x00 \x00 \xff \xfe \x00 " +
Original file line number Diff line number Diff line change @@ -375,6 +375,16 @@ packet.show2()
375
375
assert packet[LoWPAN_IPHC].src == 'fe80::ff:fe00:0'
376
376
assert packet[LoWPAN_IPHC].dst == 'fe80::ff:fe00:ffff'
377
377
378
+ = SixLoWPAN - Advanced 4 - SAM=3/SAC=0 decompression
379
+
380
+ packet = Dot15d4(b'A\xc8t\xcd\xab\xff\xff\xcf\r\xa4\xfe\xffn\x95\xe4z;:\x1a\x9b\x01\xd4^\x1e\xdc\x02\xba\x95\x7f\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\xe6\x95n\xff\xfe\xaf\xff\xfd\x08\x1e@@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x16\x80\x10\xff\xff\xff\xff\x00\x01\x00\x00\x00\x00\x00\x00\xe6\x95n\xff\xfe\xa4\x05O')
381
+ assert packet[LoWPAN_IPHC].sac == 0
382
+ assert packet[LoWPAN_IPHC].sam == 3
383
+ assert packet[LoWPAN_IPHC].dac == 0
384
+ assert packet[LoWPAN_IPHC].dam == 3
385
+ assert packet[LoWPAN_IPHC].src == "fe80::e695:6eff:fea4:dcf"
386
+ assert packet[LoWPAN_IPHC].dst == "ff02::1a"
387
+
378
388
= SixLoWPAN - Using ICMP
379
389
380
390
#ICMP: Neighbour Solicitation
You can’t perform that action at this time.
0 commit comments