aboutsummaryrefslogtreecommitdiffstats
path: root/vnet/vnet/map/examples/map-test.py
diff options
context:
space:
mode:
authorOle Troan <ot@cisco.com>2016-01-05 20:05:52 +0100
committerOle Troan <ot@cisco.com>2016-01-05 20:05:52 +0100
commit92be0df475f3165ef0d82da35250c77a223f2954 (patch)
tree89f9d74991e02a30954d90323bccbc5d86444cd2 /vnet/vnet/map/examples/map-test.py
parentce853c4838c173fb389f26d59511b1af5ca3d8ce (diff)
Clean up script to generate LW46 bindings / MAP-E rules.
Change-Id: I3a3949e728f4e4875efddd4f02a55746c998a5ed Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'vnet/vnet/map/examples/map-test.py')
-rwxr-xr-xvnet/vnet/map/examples/map-test.py214
1 files changed, 0 insertions, 214 deletions
diff --git a/vnet/vnet/map/examples/map-test.py b/vnet/vnet/map/examples/map-test.py
deleted file mode 100755
index 01f377fb6ee..00000000000
--- a/vnet/vnet/map/examples/map-test.py
+++ /dev/null
@@ -1,214 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2015 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import sys, time
-from scapy.all import *
-
-import mapalgs
-
-
-ifname = "vpp-tap"
-
-loc_v4_mac = "aa:aa:aa:aa:aa:a4"
-loc_v6_mac = "aa:aa:aa:aa:aa:a6"
-vpp_mac = "aa:aa:aa:aa:00:00"
-
-map_t = 1
-
-fragsize = 0
-map_mtu = 200
-
-def mac_to_vppmac(mac):
- mac = mac.replace(':', '')
- return mac[0:4]+"."+mac[4:8]+"."+mac[8:12]
-
-
-map = mapalgs.MapCalc( rulev6 = 'bbbb::/32',
- rulev4 = '20.0.0.0/24',
- ratio = 256);
-
-dmr = mapalgs.DmrCalc('cccc:bbbb::/96')
-
-
-ICMP_TYPES_CODES = {
- 0: 0,
- 3: 15,
- 4: 0,
- 5: 3,
- 6: 0,
- 8: 0,
- 9: 0,
- 10: 0,
- 11: 1,
- 12: 2,
- 13: 0,
- 14: 0,
- 15: 0,
- 16: 0,
- 17: 0,
- 18: 0
-}
-
-ICMP6_TYPES_CODES = {
- 1: 7,
- 2: 0,
- 3: 1,
- 4: 3,
-}
-
-def net_conf():
- c = ""
- c += "tap connect "+ifname+" hwaddr "+mac_to_vppmac(vpp_mac)+" \n"
- c += "set int state tap-0 up \n"
- c += "set ip6 neighbor tap-0 2001:f00d::1 "+mac_to_vppmac(loc_v6_mac)+" \n"
- c += "set ip arp tap-0 10.0.0.1 "+mac_to_vppmac(loc_v4_mac)+" \n"
- c += "ip route add ::/0 via 2001:f00d::1 tap-0 \n"
- c += "ip route add 0.0.0.0/0 via 10.0.0.1 tap-0 \n"
- return c
-
-def conf():
- c = net_conf()
- c += "map add domain ip4-pfx 20.0.0.0/24 ip6-pfx bbbb::/32 ea-bits-len 16 psid-offset 6 psid-len 8"
- if map_mtu != 0:
- c += " mtu "+str(map_mtu)
- if map_t:
- c += " ip6-src cccc:bbbb::/96 map-t"
- else:
- c += " ip6-src cccc:bbbb::ffff"
-
- c += "\n"
- return c
-
-def send_packet(ip_header, ip_content):
- print("Send packet")
- if fragsize != 0:
- if ip_header.version == 4:
- frags = fragment(ip_header/ip_content, fragsize=fragsize)
- for f in frags:
- print("Fragmented IPv4 packet")
- sendp(Ether(dst=vpp_mac, src=loc_v4_mac)/f, iface=ifname)
- elif ip_header.version == 6:
- frags = fragment6(ip_header/IPv6ExtHdrFragment()/ip_content, fragsize)
- for f in frags:
- print("Fragmented IPv6 packet")
- sendp(Ether(dst=vpp_mac, src=loc_v6_mac)/f, iface=ifname)
- else:
- sendp(Ether(dst=vpp_mac)/ip_header/ip_content, iface=ifname)
-
-def send_packet_frag_inner(packet, inner_header, inner_content):
- print("Send packet with inner ICMP packet")
- if fragsize != 0:
- if packet.version == 4:
- frags = fragment(inner_header/inner_content, fragsize=fragsize)
- for f in frags:
- print("Fragmented IPv4 inner packet")
- sendp(Ether(dst=vpp_mac, src=loc_v4_mac)/packet/f, iface=ifname)
- elif packet.version == 6:
- frags = fragment6(inner_header/IPv6ExtHdrFragment()/inner_content, fragsize)
- for f in frags:
- print("Fragmented IPv6 inner packet")
- sendp(Ether(dst=vpp_mac, src=loc_v6_mac)/packet/f, iface=ifname)
- else:
- sendp(Ether(dst=vpp_mac)/packet/inner_header/inner_content, iface=ifname)
-
-
-def sendv6udp(src, dst, port):
- psid = map.gen_psid(port)
- ceaddr = str(map.get_mapce_addr(src, psid))
- dst = str(dmr.embed_6052addr(dst))
- send_packet(IPv6(dst=dst, src=ceaddr), UDP(sport=port)/('X'*900))
-
-def sendv6tcp(src, dst, port):
- psid = map.gen_psid(port)
- ceaddr = str(map.get_mapce_addr(src, psid))
- dst = str(dmr.embed_6052addr(dst))
- send_packet(IPv6(dst=dst, src=ceaddr), TCP(sport=port)/('X'*900))
-
-def sendv4udp(src, dst, port):
- send_packet(IP(dst=dst, src=src), UDP(dport=port)/('X'*900))
-
-def sendv4tcp(src, dst, port):
- send_packet(IP(dst=dst, src=src), TCP(dport=port)/('X'*900))
-
-def sendv6ping(src, dst, id):
- psid = map.gen_psid(id)
- ceaddr = str(map.get_mapce_addr(src, psid))
- dst = str(dmr.embed_6052addr(dst))
- send_packet(IPv6(dst=dst, src=ceaddr), ICMPv6EchoRequest(id=id, data='A'*500))
- send_packet(IPv6(dst=dst, src=ceaddr), ICMPv6EchoReply(id=id, data='A'*500))
-
-def sendv4ping(src, dst, id):
- send_packet(IP(dst=dst, src=src), ICMP(id=id, type=0)/('X'*500))
- send_packet(IP(dst=dst, src=src), ICMP(id=id, type=8)/('X'*500))
-
-def sendv4icmperr(src, dst, type, code, port, inner_src, inner_dst, payload_length):
- inner = IP(dst=inner_dst, src=inner_src)/TCP(sport=port, dport=8888)/('X'*payload_length)
- send_packet_frag_inner(IP(dst=dst, src=src)/ICMP(type=type, code=code), IP(dst=inner_dst, src=inner_src), TCP(sport=port, dport=8888)/('X'*payload_length))
- #send_packet(IP(dst=dst, src=src)/ICMP(type=type, code=code)/inner)
-
-def sendv6icmperr(src, dst, type, code, port, payload_length):
- psid = map.gen_psid(port)
- src = str(map.get_mapce_addr(src, psid))
- dst = str(dmr.embed_6052addr(dst))
- inner_header = IPv6(dst=src, src=dst)
- inner_content = TCP(sport=8888, dport=port)/('X'*payload_length)
- send_packet_frag_inner(IPv6(dst=dst, src=src)/ICMPv6DestUnreach(type=type, code=code), inner_header, inner_content)
- #send_packet(IPv6(dst=dst, src=src)/ICMPv6DestUnreach(type=type, code=code)/inner)
-
-def sendv4icmp_errors(src, dst, port, inner_src, inner_dst, payload_length):
- for type in ICMP_TYPES_CODES:
- for code in range(0, ICMP_TYPES_CODES[type] + 1):
- sendv4icmperr(src, dst, type, code, port, inner_src, inner_dst, payload_length)
- #sendv4icmperr(src, dst, type, ICMP_TYPES_CODES[type] + 2, port, inner_src, inner_dst, payload_length)
- #sendv4icmperr(src, dst, type, 255, port, inner_src, inner_dst, payload_length)
- #sendv4icmperr(src, dst, 1, 0, port, inner_src, inner_dst, payload_length)
- #sendv4icmperr(src, dst, 2, 10, port, inner_src, inner_dst, payload_length)
- #sendv4icmperr(src, dst, 255, 255, port, inner_src, inner_dst, payload_length)
-
- #TODO: Check wrong paramater with different pointer values
-
-def sendv6icmp_errors(src, dst, port, payload_length):
- for type in ICMP6_TYPES_CODES:
- for code in range(0, ICMP6_TYPES_CODES[type] + 1):
- sendv6icmperr(src, dst, type, code, port, payload_length)
- #sendv6icmperr(src, dst, type, ICMP6_TYPES_CODES[type] + 2, port, payload_length)
- #sendv6icmperr(src, dst, type, 255, port, payload_length)
-
-
-def traffic():
- delay = 2.0
- while 1:
- #sendp(Ether(dst="bb:bb:bb:bb:bb:b4")/IP(dst="20.0.0.1")/UDP(chksum=0)/('X'*900), iface="vpp-tapv4")
- #sendp(Ether(dst="bb:bb:bb:bb:bb:b6")/IPv6(dst="cccc:bbbb::a000:0001")/ICMPv6EchoRequest()/('X'*900), iface="vpp-tapv6")
- #sendp(Ether(dst="bb:bb:bb:bb:bb:b6")/IPv6(dst="cccc:bbbb::a000:0001")/UDP()/('X'*900), iface="vpp-tapv6")
- sendv6udp("20.0.0.1", "10.0.0.1", 12001)
- sendv6tcp("20.0.0.1", "10.0.0.1", 12002)
- sendv4udp("10.0.0.1", "20.0.0.1", 12003)
- sendv4tcp("10.0.0.1", "20.0.0.1", 12004)
- sendv6ping("20.0.0.1", "10.0.0.1", 12005)
- sendv4ping("10.0.0.1", "20.0.0.1", 12006)
- sendv4icmp_errors("10.0.0.1", "20.0.0.1", 12006, "20.0.0.1", "10.0.0.1", 500)
- sendv4icmp_errors("10.0.0.1", "20.0.0.1", 12006, "20.0.0.1", "10.0.0.1", 1500)
- sendv6icmp_errors("20.0.0.1", "10.0.0.1", 12006, 500)
- time.sleep(delay)
- delay *= 0.9
-
-if len(sys.argv) <= 1:
- print("Usage: conf|traffic")
- exit(1)
-
-if sys.argv[1] == "conf":
- print(conf())
-elif sys.argv[1] == "traffic":
- traffic() \ No newline at end of file