+
+def generate_map_register(eid, rloc):
+ """Create a LISP Map-Register packet as a Scapy object
+ Args:
+ :param eid: A string used as the EID record
+ :param rloc: A string used as the RLOC
+ Returns:
+ :return : returns a Scapy Map-Request packet object
+ """
+ sport1 = random.randint(60000, 65000)
+ sport2 = random.randint(60000, 65000)
+ rnonce = random.randint(0, 2**63)
+
+ rlocs = [lisp.LISP_Locator_Record(priority=1, weight=1,
+ multicast_priority=255,
+ multicast_weight=0,
+ reserved=0, locator_flags=5,
+ locator_afi=1, address=rloc)]
+
+ record = [lisp.LISP_MapRecord(record_ttl=1440, locator_count=1,
+ eid_prefix_length=32, action=0,
+ authoritative=1, reserved=0,
+ map_version_number=0, record_afi=1,
+ record_address=eid, locators=rlocs)]
+
+ packet = lisp.Ether(dst=dst_mac, src=src_mac)
+ packet /= lisp.IP(dst=dst_rloc, src=src_rloc)
+ packet /= lisp.UDP(sport=sport1, dport=4342)
+ packet /= lisp.LISP_MapRegister(ptype=3, nonce=rnonce,
+ register_flags=1,
+ register_count=1,
+ register_records=record)
+ return packet
+