Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/scapy/layers/mobileip.py: 96%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

24 statements  

1# SPDX-License-Identifier: GPL-2.0-only 

2# This file is part of Scapy 

3# See https://scapy.net/ for more information 

4# Copyright (C) Philippe Biondi <phil@secdev.org> 

5 

6""" 

7Mobile IP. 

8""" 

9 

10from scapy.fields import ByteEnumField, ByteField, IPField, LongField, \ 

11 ShortField, XByteField 

12from scapy.packet import Packet, bind_layers, bind_bottom_up 

13from scapy.layers.inet import IP, UDP 

14 

15 

16class MobileIP(Packet): 

17 name = "Mobile IP (RFC3344)" 

18 fields_desc = [ByteEnumField("type", 1, {1: "RRQ", 3: "RRP"})] 

19 

20 

21class MobileIPRRQ(Packet): 

22 name = "Mobile IP Registration Request (RFC3344)" 

23 fields_desc = [XByteField("flags", 0), 

24 ShortField("lifetime", 180), 

25 IPField("homeaddr", "0.0.0.0"), 

26 IPField("haaddr", "0.0.0.0"), 

27 IPField("coaddr", "0.0.0.0"), 

28 LongField("id", 0), ] 

29 

30 

31class MobileIPRRP(Packet): 

32 name = "Mobile IP Registration Reply (RFC3344)" 

33 fields_desc = [ByteField("code", 0), 

34 ShortField("lifetime", 180), 

35 IPField("homeaddr", "0.0.0.0"), 

36 IPField("haaddr", "0.0.0.0"), 

37 LongField("id", 0), ] 

38 

39 

40class MobileIPTunnelData(Packet): 

41 name = "Mobile IP Tunnel Data Message (RFC3519)" 

42 fields_desc = [ByteField("nexthdr", 4), 

43 ShortField("res", 0)] 

44 

45 

46bind_bottom_up(UDP, MobileIP, dport=434) 

47bind_bottom_up(UDP, MobileIP, sport=434) 

48bind_layers(UDP, MobileIP, sport=434, dport=434) 

49bind_layers(MobileIP, MobileIPRRQ, type=1) 

50bind_layers(MobileIP, MobileIPRRP, type=3) 

51bind_layers(MobileIP, MobileIPTunnelData, type=4) 

52bind_layers(MobileIPTunnelData, IP, nexthdr=4)