Skip to content
This repository was archived by the owner on Jun 27, 2018. It is now read-only.

Commit 77906d5

Browse files
author
Joshua Reich
committed
Merge branch 'dev-master'
2 parents da09952 + bd52573 commit 77906d5

File tree

552 files changed

+144304
-728
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

552 files changed

+144304
-728
lines changed

mininet/extra-topos.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
class ChainTopo(Topo):
55

6-
def __init__(self, numSwitches, numClients, numServers=0):
6+
def __init__(self, numSwitches, numClients, numServers=0, noIP=False):
77

88
# Add default members to class.
99
super(ChainTopo, self ).__init__()
@@ -15,16 +15,19 @@ def __init__(self, numSwitches, numClients, numServers=0):
1515
client_ids = ['h'+str(i) for i in range(1,numClients+1)]
1616
server_ids = ['hs'+str(i) for i in range(1,numServers+1)]
1717

18-
self.add_hosts(client_ids + server_ids)
18+
self.add_hosts(client_ids + server_ids,noIP)
1919
self.connect_hosts(switch_inds,client_ids,server_ids)
2020

2121
def add_switches(self,switch_inds):
2222
for i in switch_inds:
2323
self.addSwitch('s'+str(i))
2424

25-
def add_hosts(self,host_ids):
25+
def add_hosts(self,host_ids,noIP):
2626
for i in host_ids:
27-
self.addHost(i)
27+
if not noIP:
28+
self.addHost(i)
29+
else:
30+
self.addHost(i,ip=None)
2831

2932
def connect_switches(self,switch_ids):
3033

of_client/pox_client.py

Lines changed: 4 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040

4141
from pyretic.backend.comm import *
4242

43-
4443
def inport_value_hack(outport):
4544
if outport > 1:
4645
return 1
@@ -135,120 +134,11 @@ def __init__(self,show_traces=False,debug_packet_in=False,ip='127.0.0.1',port=BA
135134
self.backend_channel = BackendChannel(ip, port, self)
136135
self.adjacency = {} # From Link to time.time() stamp
137136

138-
def packet_from_network(self, switch, inport, raw):
139-
h = {}
140-
h["switch"] = switch
141-
h["inport"] = inport
142-
143-
p = packetlib.ethernet(raw)
144-
h["header_len"] = p.hdr_len
145-
h["payload_len"] = p.payload_len
146-
h["srcmac"] = p.src.toRaw()
147-
h["dstmac"] = p.dst.toRaw()
148-
h["ethtype"] = p.type
149-
150-
p = p.next
151-
if isinstance(p, packetlib.vlan):
152-
h['vlan_id'] = p.id
153-
h['vlan_pcp'] = p.pcp
154-
h["ethtype"] = p.eth_type
155-
p = p.next
156-
157-
if isinstance(p, packetlib.ipv4):
158-
h["srcip"] = p.srcip.toRaw()
159-
h["dstip"] = p.dstip.toRaw()
160-
h["protocol"] = p.protocol
161-
h["tos"] = p.tos
162-
p = p.next
163-
164-
if isinstance(p, packetlib.udp) or isinstance(p, packetlib.tcp):
165-
h["srcport"] = p.srcport
166-
h["dstport"] = p.dstport
167-
elif isinstance(p, packetlib.icmp):
168-
h["srcport"] = p.type
169-
h["dstport"] = p.code
170-
elif isinstance(p, packetlib.arp):
171-
if p.opcode <= 255:
172-
h["ethtype"] = packetlib.ethernet.ARP_TYPE
173-
h["protocol"] = p.opcode
174-
h["srcip"] = p.protosrc.toRaw()
175-
h["dstip"] = p.protodst.toRaw()
176-
177-
h["raw"] = raw
178-
return h
179-
180-
def make_arp(self, packet):
181-
p = packetlib.ethernet()
182-
p.src = packet["srcmac"]
183-
p.dst = packet["dstmac"]
184-
185-
p.type = packetlib.ethernet.ARP_TYPE
186-
p.next = packetlib.arp(prev=p)
187-
188-
p.next.hwsrc = packet["srcmac"]
189-
p.next.hwdst = packet["dstmac"]
190-
p.next.protosrc = packet["srcip"]
191-
p.next.protodst = packet["dstip"]
192-
p.next.opcode = packet['protocol']
193-
194-
return p
195-
137+
def packet_from_network(self, **kwargs):
138+
return kwargs
196139

197140
def packet_to_network(self, packet):
198-
if len(packet["raw"]) == 0:
199-
if packet["ethtype"] == packetlib.ethernet.ARP_TYPE:
200-
p_begin = p = self.make_arp(packet)
201-
else: # BLANK PACKET FOR NOW - MAY NEED TO SUPPORT OTHER PACKETS LATER
202-
p_begin = p = packetlib.ethernet()
203-
else:
204-
p_begin = p = packetlib.ethernet(packet["raw"])
205-
206-
# ETHERNET PACKET IS OUTERMOST
207-
p.src = packet["srcmac"]
208-
p.dst = packet["dstmac"]
209-
210-
if 'vlan_id' in packet:
211-
if isinstance(p.next, packetlib.vlan):
212-
p = p.next
213-
else:
214-
# Make a vlan header
215-
old_eth_type = p.type
216-
p.type = 0x8100
217-
p.next = packetlib.vlan(next=p.next)
218-
p = p.next
219-
p.eth_type = old_eth_type
220-
p.id = packet['vlan_id']
221-
p.pcp = packet['vlan_pcp']
222-
else:
223-
if isinstance(p.next, packetlib.vlan):
224-
p.type = p.next.eth_type # Restore encapsulated eth type
225-
p.next = p.next.next # Remove vlan from header
226-
227-
# GET PACKET INSIDE ETHERNET/VLAN
228-
p = p.next
229-
if isinstance(p, packetlib.ipv4):
230-
p.srcip = packet["srcip"]
231-
p.dstip = packet["dstip"]
232-
p.protocol = packet["protocol"]
233-
p.tos = packet["tos"]
234-
235-
p = p.next
236-
if isinstance(p, packetlib.udp) or isinstance(p, packetlib.tcp):
237-
p.srcport = packet["srcport"]
238-
p.dstport = packet["dstport"]
239-
elif isinstance(p, packetlib.icmp):
240-
p.type = packet["srcport"]
241-
p.code = packet["dstport"]
242-
243-
elif isinstance(p, packetlib.arp):
244-
if 'vlan_id' in packet:
245-
p.opcode = packet["protocol"]
246-
p.protosrc = packet["srcip"]
247-
p.protodst = packet["dstip"]
248-
else:
249-
p_begin = self.make_arp(packet)
250-
251-
return p_begin.pack()
141+
return packet['raw']
252142

253143
def _handle_ComponentRegistered (self, event):
254144
if event.name == "openflow":
@@ -759,7 +649,7 @@ def _handle_PacketIn(self, event):
759649
print "dpid\t%s" % event.dpid
760650
print
761651

762-
received = self.packet_from_network(event.dpid, event.ofp.in_port, event.data)
652+
received = self.packet_from_network(switch=event.dpid, inport=event.ofp.in_port, raw=event.data)
763653
self.send_to_pyretic(['packet',received])
764654

765655

0 commit comments

Comments
 (0)