Re: [nox-dev] Assertion on udp.checksum()

2012-02-01 Thread Aaron Rosen
Hello,

I was just merging my local changes with whats in the git and noticed
this change never made it in.

In ipv4.py self.id = int(time.time()) but this should be self.id =
int(time.time)) 0x  (since the field is only 2bytes)

Aaron


On Mon, Aug 8, 2011 at 6:31 PM, Murphy McCauley jam...@nau.edu wrote:
 It's the identification field of the IPv4 header.  Mostly this is used to
 match up fragments (which should all retain the same value).  So time.time()
 isn't really a very good value for it anyway, as it should be relatively
 unique, but int(time.time()) is only unique for packets sent in different
 seconds which seems like a fairly unsafe assumption.  We should probably
 just use a counter.  Which, looking at the code... it looks like may have
 been done in the past (ip_id field) and then changed.  It should probably be
 changed back. :)  I think that's what I did when I fixed it before; it must
 just have not made it out of some experimental branch.  Sorry it got you!

 -- Murphy

 On Aug 8, 2011, at 3:18 PM, Aaron Rosen wrote:

 Thanks that did the trick.

 Yea I thought this was strange too since this used to work a while ago.

 Out of curiosity what is id in ipv4.py I see that it holds the time but why
 is that needed?

 Thanks again,

 Aaron

 On Mon, Aug 8, 2011 at 6:13 PM, Murphy McCauley jam...@nau.edu wrote:

 Strange, I am positive that I have fixed this.  Maybe it just hasn't
 gotten pushed yet.

 In ipv4.py around line 76, try something like...
 self.id = int(time.time())  0x

 -- Murphy

 On Aug 8, 2011, at 3:08 PM, Aaron Rosen wrote:

 Thanks,

 I hate to bug you again but this looks fine to me?

 iplen = 39     len(hello world)(11)  + udp header(8)  + 20 (ip_header)
 17 =   UDP_PROTOCOL

   bad packet [69, 0, 39, 1312840938, 0, 64, 17, 0, 167837954, 167837953]
 00019|pyrt|ERR:unable to invoke a Python event handler:
 Traceback (most recent call last):
   File ./nox/lib/util.py, line 114, in f
     event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/sos.py, line 644, in packet_in_callback
     learn(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/sos.py, line 212, in learn
     forward(dpid, inport, packet, packet.arr, bufid, TRUNK_PORT)
   File ./nox/coreapps/examples/sos.py, line 333, in forward
     ret = install_agent_flows(dpid, inport, packet, buf, bufid,
 TRUNK_PORT);
   File ./nox/coreapps/examples/sos.py, line 594, in install_agent_flows
     inst.send_openflow_packet(dp_near, inform_dest.tostring(),
 inst.Agents[dp_near]['inport'], inport)
   File ./nox/lib/packet/packet_base.py, line 118, in tostring
     return ''.join((buf, self.next.tostring()))
   File ./nox/lib/packet/packet_base.py, line 113, in tostring
     buf = self.hdr()
   File ./nox/lib/packet/ipv4.py, line 179, in hdr
     self.dstip)
 error: 'H' format requires 0 = number = 65535


 On Mon, Aug 8, 2011 at 5:32 PM, Murphy McCauley jam...@nau.edu wrote:

 I think you just have a field with a bad value.

 Try replacing the checksum function with something like this to help you
 spot it:

 def checksum(self):
   try:
     data = struct.pack('!BBHHBBHII', (self.v  4) + self.hl, self.tos,
                        self.iplen, self.id,
                        (self.flags  13) | self.frag, self.ttl,
                        self.protocol, 0, self.srcip,
                        self.dstip)
     return checksum(data, 0)
   except:
     print bad packet,[(self.v  4) + self.hl,
                         self.tos,
                         self.iplen, self.id,
                         (self.flags  13) | self.frag, self.ttl,
                         self.protocol, 0, self.srcip,
                         self.dstip]

 -- Murphy

 On Aug 8, 2011, at 1:50 PM, Aaron Rosen wrote:

 Hello,

 I emailed the mailing list about this before but it seems like maybe
 something changed or maybe I'm blind. Anyways, the following code generates
 the following execption.  Any ideas what's going wrong?


  def send_udp(mac, dstip, srcip, port, payload):
     l4 = udp()
     l4.srcport = 1999
     l4.dstport = 1998
     l4.len = udp.MIN_LEN  + len(hello world)
     l4.set_payload(hello world)
     l4.arr = l4.tostring()

     l3 = ipv4()
     l3.iplen = ipv4.MIN_LEN + l4.len
     l3.protocol = ipv4.UDP_PROTOCOL
     l3.dstip = ipstr_to_int(10.1.1.1)
     l3.srcip = ipstr_to_int(10.1.1.2)
     l3.set_payload(l4)

     l2 = ethernet()
     l2.set_payload(l3)
     l2.dst = octstr_to_array(00:00:00:00:00:01)
     l2.src = octstr_to_array(00:00:00:00:00:09)
     l2.type = ethernet.IP_TYPE
     l3.checksum()
     l4.csum = l4.checksum()
     return l2


 00019|pyrt|ERR:unable to invoke a Python event handler:
 Traceback (most recent call last):
   File ./nox/lib/util.py, line 114, in f
     event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/sos.py, line 626, in packet_in_callback
     learn(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/sos.py, line 194, in learn
 

Re: [nox-dev] Assertion on udp.checksum()

2011-08-08 Thread Aaron Rosen
Hello,

I emailed the mailing list about this before but it seems like maybe
something changed or maybe I'm blind. Anyways, the following code generates
the following execption.  Any ideas what's going wrong?


 def send_udp(mac, dstip, srcip, port, payload):
l4 = udp()
l4.srcport = 1999
l4.dstport = 1998
l4.len = udp.MIN_LEN  + len(hello world)
l4.set_payload(hello world)
l4.arr = l4.tostring()

l3 = ipv4()
l3.iplen = ipv4.MIN_LEN + l4.len
l3.protocol = ipv4.UDP_PROTOCOL
l3.dstip = ipstr_to_int(10.1.1.1)
l3.srcip = ipstr_to_int(10.1.1.2)
l3.set_payload(l4)

l2 = ethernet()
l2.set_payload(l3)
l2.dst = octstr_to_array(00:00:00:00:00:01)
l2.src = octstr_to_array(00:00:00:00:00:09)
l2.type = ethernet.IP_TYPE
l3.checksum()
l4.csum = l4.checksum()
return l2


00019|pyrt|ERR:unable to invoke a Python event handler:
Traceback (most recent call last):
  File ./nox/lib/util.py, line 114, in f
event.total_len, buffer_id, packet)
  File ./nox/coreapps/examples/sos.py, line 626, in packet_in_callback
learn(dpid, inport, packet, packet.arr, bufid)
  File ./nox/coreapps/examples/sos.py, line 194, in learn
forward(dpid, inport, packet, packet.arr, bufid, TRUNK_PORT)
  File ./nox/coreapps/examples/sos.py, line 315, in forward
ret = install_agent_flows(dpid, inport, packet, buf, bufid, TRUNK_PORT);
  File ./nox/coreapps/examples/sos.py, line 575, in install_agent_flows
inform_dest = send_udp(mac, dstip, srcip, port, payload)
  File ./nox/coreapps/examples/sos.py, line 89, in send_udp
l3.checksum()
  File ./nox/lib/packet/ipv4.py, line 162, in checksum
self.dstip)
error: 'H' format requires 0 = number = 65535


On Mon, Jun 20, 2011 at 1:59 PM, Aaron Rosen aro...@clemson.edu wrote:

 Thanks Murphy!

 You're right, that did the trick.

 Aaron

 On Mon, Jun 20, 2011 at 1:55 PM, Murphy McCauley jam...@nau.edu wrote:
  So I think the call to l3.checksum() is extraneous, but the real issue is
  probably that l3.iplen should be ipv4.MIN_LEN + l4.len.
 
  -- Murphy
 
  On Monday, June 20, 2011 09:42:07 AM Aaron Rosen wrote:
  Hi Murphy,
 
  wow... Opps...
 
  I'm trying the following: This doesn't return any errors but in
  wireshark the packet_outs say Malformed UDP packets.
 
  def send_udp_message():
 
 l4 = udp()
 l4.srcport = 1999
 l4.dstport = 1888
 l4.len = udp.MIN_LEN + len(hello_world)
 l4.set_payload(Hello_world)
 l4.arr = l4.tostring()
 
 l3 = ipv4()
 l3.iplen = ipv4.MIN_LEN
 l3.protocol = ipv4.UDP_PROTOCOL
 l3.dstip = ipstr_to_int(130.127.39.7);
 l3.srcip = ipstr_to_int(1.1.1.1);
 l3.set_payload(l4)
 
 l2 = ethernet()
 l2.set_payload(l3)
 l2.dst = octstr_to_array(00:00:00:00:00:02)
 l2.dst = octstr_to_array(a1:00:04:00:0a:04)
 l2.type = ethernet.IP_TYPE
 l3.checksum()
 l4.csum = l4.checksum()
 
 return l2
 
  
  inst.send_openflow_packet(dpid, send_udp_message().tostring(),
  openflow.OFPP_FLOOD, inport)
  source = mac_to_str(packet.src)
 
  On Mon, Jun 20, 2011 at 12:29 PM, Murphy McCauley jam...@nau.edu
 wrote:
   Unfortunately, your tweak breaks the logic of the assert.
  
   The assert is asserting that self.next is a packet_base of some sort
 OR a
   string.  You've set it to a string, so... it should be a string.  So
 it
   should definitely not be a packet_base.  So the first of your asserts
   will always fail.
  
   For the sake of testing, would you please comment out the first of
 your
   two asserts (leaving only the one against type('')), and let me know
 the
   result?
  
   -- Murphy
  
   On Monday, June 20, 2011 09:22:23 AM Aaron Rosen wrote:
   Hi Murphy,
  
   I'm using zaku but the one in destiny looked the same to be.
  
   I changed to assert to be on two lines so I could see which one was
   firing.
  
   def checksum(self):
   #assert(isinstance(self.next, packet_base) or type(self.next)
   == type(''))
   assert(isinstance(self.next, packet_base))
   assert(type(self.next) == type(''))
  
  
   Thanks,
  
   Aaron
  
   On Mon, Jun 20, 2011 at 12:19 PM, Murphy McCauley jam...@nau.edu
 wrote:
What NOX are you using?  Your udp.py does not seem to be the one in
zaku or destiny...
   
-- Murphy
   
On Sunday, June 19, 2011 03:34:20 PM Aaron Rosen wrote:
Hello,
   
I'm trying to send udp packets from my controller but I'm getting
 the
following assertion when I call udp().checksum(). I was hoping
someone could point out where I'm going wrong.
   
Thanks,
   
Aaron
   
Traceback (most recent call last):
  File ./nox/lib/util.py, line 116, in f
event.total_len, buffer_id, packet)
  File ./nox/coreapps/examples/sos.py, line 299, in
packet_in_callback learn(dpid, inport, packet)
  File ./nox/coreapps/examples/sos.py, line 56, in learn
send_packet = send_udp_message()
  File 

Re: [nox-dev] Assertion on udp.checksum()

2011-08-08 Thread Murphy McCauley
I think you just have a field with a bad value.

Try replacing the checksum function with something like this to help you spot 
it:

def checksum(self):
  try:
data = struct.pack('!BBHHBBHII', (self.v  4) + self.hl, self.tos,
   self.iplen, self.id,
   (self.flags  13) | self.frag, self.ttl,
   self.protocol, 0, self.srcip,
   self.dstip)
return checksum(data, 0)
  except:
print bad packet,[(self.v  4) + self.hl,
self.tos,
self.iplen, self.id,
(self.flags  13) | self.frag, self.ttl,
self.protocol, 0, self.srcip,
self.dstip]

-- Murphy

On Aug 8, 2011, at 1:50 PM, Aaron Rosen wrote:

 Hello, 
 
 I emailed the mailing list about this before but it seems like maybe 
 something changed or maybe I'm blind. Anyways, the following code generates 
 the following execption.  Any ideas what's going wrong? 
 
 
  def send_udp(mac, dstip, srcip, port, payload):
 l4 = udp()
 l4.srcport = 1999
 l4.dstport = 1998
 l4.len = udp.MIN_LEN  + len(hello world)
 l4.set_payload(hello world)
 l4.arr = l4.tostring()
 
 l3 = ipv4()
 l3.iplen = ipv4.MIN_LEN + l4.len
 l3.protocol = ipv4.UDP_PROTOCOL
 l3.dstip = ipstr_to_int(10.1.1.1)
 l3.srcip = ipstr_to_int(10.1.1.2)
 l3.set_payload(l4)
 
 l2 = ethernet()
 l2.set_payload(l3)
 l2.dst = octstr_to_array(00:00:00:00:00:01)
 l2.src = octstr_to_array(00:00:00:00:00:09)
 l2.type = ethernet.IP_TYPE
 l3.checksum()
 l4.csum = l4.checksum() 
 return l2
 
 
 00019|pyrt|ERR:unable to invoke a Python event handler:
 Traceback (most recent call last):
   File ./nox/lib/util.py, line 114, in f
 event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/sos.py, line 626, in packet_in_callback
 learn(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/sos.py, line 194, in learn
 forward(dpid, inport, packet, packet.arr, bufid, TRUNK_PORT)
   File ./nox/coreapps/examples/sos.py, line 315, in forward
 ret = install_agent_flows(dpid, inport, packet, buf, bufid, TRUNK_PORT);
   File ./nox/coreapps/examples/sos.py, line 575, in install_agent_flows
 inform_dest = send_udp(mac, dstip, srcip, port, payload)
   File ./nox/coreapps/examples/sos.py, line 89, in send_udp
 l3.checksum()
   File ./nox/lib/packet/ipv4.py, line 162, in checksum
 self.dstip)
 error: 'H' format requires 0 = number = 65535
 
 
 On Mon, Jun 20, 2011 at 1:59 PM, Aaron Rosen aro...@clemson.edu wrote:
 Thanks Murphy!
 
 You're right, that did the trick.
 
 Aaron
 
 On Mon, Jun 20, 2011 at 1:55 PM, Murphy McCauley jam...@nau.edu wrote:
  So I think the call to l3.checksum() is extraneous, but the real issue is
  probably that l3.iplen should be ipv4.MIN_LEN + l4.len.
 
  -- Murphy
 
  On Monday, June 20, 2011 09:42:07 AM Aaron Rosen wrote:
  Hi Murphy,
 
  wow... Opps...
 
  I'm trying the following: This doesn't return any errors but in
  wireshark the packet_outs say Malformed UDP packets.
 
  def send_udp_message():
 
 l4 = udp()
 l4.srcport = 1999
 l4.dstport = 1888
 l4.len = udp.MIN_LEN + len(hello_world)
 l4.set_payload(Hello_world)
 l4.arr = l4.tostring()
 
 l3 = ipv4()
 l3.iplen = ipv4.MIN_LEN
 l3.protocol = ipv4.UDP_PROTOCOL
 l3.dstip = ipstr_to_int(130.127.39.7);
 l3.srcip = ipstr_to_int(1.1.1.1);
 l3.set_payload(l4)
 
 l2 = ethernet()
 l2.set_payload(l3)
 l2.dst = octstr_to_array(00:00:00:00:00:02)
 l2.dst = octstr_to_array(a1:00:04:00:0a:04)
 l2.type = ethernet.IP_TYPE
 l3.checksum()
 l4.csum = l4.checksum()
 
 return l2
 
  
  inst.send_openflow_packet(dpid, send_udp_message().tostring(),
  openflow.OFPP_FLOOD, inport)
  source = mac_to_str(packet.src)
 
  On Mon, Jun 20, 2011 at 12:29 PM, Murphy McCauley jam...@nau.edu wrote:
   Unfortunately, your tweak breaks the logic of the assert.
  
   The assert is asserting that self.next is a packet_base of some sort OR a
   string.  You've set it to a string, so... it should be a string.  So it
   should definitely not be a packet_base.  So the first of your asserts
   will always fail.
  
   For the sake of testing, would you please comment out the first of your
   two asserts (leaving only the one against type('')), and let me know the
   result?
  
   -- Murphy
  
   On Monday, June 20, 2011 09:22:23 AM Aaron Rosen wrote:
   Hi Murphy,
  
   I'm using zaku but the one in destiny looked the same to be.
  
   I changed to assert to be on two lines so I could see which one was
   firing.
  
   def checksum(self):
   #assert(isinstance(self.next, packet_base) or type(self.next)
   == type(''))
   assert(isinstance(self.next, packet_base))
   assert(type(self.next) == type(''))
  
  
   Thanks,
  
   Aaron
  
   On Mon, Jun 

Re: [nox-dev] Assertion on udp.checksum()

2011-08-08 Thread Aaron Rosen
Thanks,

I hate to bug you again but this looks fine to me?

iplen = 39 len(hello world)(11)  + udp header(8)  + 20 (ip_header)
17 =   UDP_PROTOCOL

  bad packet [69, 0, 39, 1312840938, 0, 64, 17, 0, 167837954, 167837953]
00019|pyrt|ERR:unable to invoke a Python event handler:
Traceback (most recent call last):
  File ./nox/lib/util.py, line 114, in f
event.total_len, buffer_id, packet)
  File ./nox/coreapps/examples/sos.py, line 644, in packet_in_callback
learn(dpid, inport, packet, packet.arr, bufid)
  File ./nox/coreapps/examples/sos.py, line 212, in learn
forward(dpid, inport, packet, packet.arr, bufid, TRUNK_PORT)
  File ./nox/coreapps/examples/sos.py, line 333, in forward
ret = install_agent_flows(dpid, inport, packet, buf, bufid, TRUNK_PORT);
  File ./nox/coreapps/examples/sos.py, line 594, in install_agent_flows
inst.send_openflow_packet(dp_near, inform_dest.tostring(),
inst.Agents[dp_near]['inport'], inport)
  File ./nox/lib/packet/packet_base.py, line 118, in tostring
return ''.join((buf, self.next.tostring()))
  File ./nox/lib/packet/packet_base.py, line 113, in tostring
buf = self.hdr()
  File ./nox/lib/packet/ipv4.py, line 179, in hdr
self.dstip)
error: 'H' format requires 0 = number = 65535


On Mon, Aug 8, 2011 at 5:32 PM, Murphy McCauley jam...@nau.edu wrote:

 I think you just have a field with a bad value.

 Try replacing the checksum function with something like this to help you
 spot it:

 def checksum(self):
   try:
 data = struct.pack('!BBHHBBHII', (self.v  4) + self.hl, self.tos,
self.iplen, self.id,
(self.flags  13) | self.frag, self.ttl,
self.protocol, 0, self.srcip,
self.dstip)
 return checksum(data, 0)
   except:
 print bad packet,[(self.v  4) + self.hl,
 self.tos,
 self.iplen, self.id,
 (self.flags  13) | self.frag, self.ttl,
 self.protocol, 0, self.srcip,
 self.dstip]

 -- Murphy

 On Aug 8, 2011, at 1:50 PM, Aaron Rosen wrote:

 Hello,

 I emailed the mailing list about this before but it seems like maybe
 something changed or maybe I'm blind. Anyways, the following code generates
 the following execption.  Any ideas what's going wrong?


  def send_udp(mac, dstip, srcip, port, payload):
 l4 = udp()
 l4.srcport = 1999
 l4.dstport = 1998
 l4.len = udp.MIN_LEN  + len(hello world)
 l4.set_payload(hello world)
 l4.arr = l4.tostring()

 l3 = ipv4()
 l3.iplen = ipv4.MIN_LEN + l4.len
 l3.protocol = ipv4.UDP_PROTOCOL
 l3.dstip = ipstr_to_int(10.1.1.1)
 l3.srcip = ipstr_to_int(10.1.1.2)
 l3.set_payload(l4)

 l2 = ethernet()
 l2.set_payload(l3)
 l2.dst = octstr_to_array(00:00:00:00:00:01)
 l2.src = octstr_to_array(00:00:00:00:00:09)
 l2.type = ethernet.IP_TYPE
 l3.checksum()
 l4.csum = l4.checksum()
 return l2


 00019|pyrt|ERR:unable to invoke a Python event handler:
 Traceback (most recent call last):
   File ./nox/lib/util.py, line 114, in f
 event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/sos.py, line 626, in packet_in_callback
 learn(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/sos.py, line 194, in learn
 forward(dpid, inport, packet, packet.arr, bufid, TRUNK_PORT)
   File ./nox/coreapps/examples/sos.py, line 315, in forward
 ret = install_agent_flows(dpid, inport, packet, buf, bufid,
 TRUNK_PORT);
   File ./nox/coreapps/examples/sos.py, line 575, in install_agent_flows
 inform_dest = send_udp(mac, dstip, srcip, port, payload)
   File ./nox/coreapps/examples/sos.py, line 89, in send_udp
 l3.checksum()
   File ./nox/lib/packet/ipv4.py, line 162, in checksum
 self.dstip)
 error: 'H' format requires 0 = number = 65535


 On Mon, Jun 20, 2011 at 1:59 PM, Aaron Rosen aro...@clemson.edu wrote:

 Thanks Murphy!

 You're right, that did the trick.

 Aaron

 On Mon, Jun 20, 2011 at 1:55 PM, Murphy McCauley jam...@nau.edu wrote:
  So I think the call to l3.checksum() is extraneous, but the real issue
 is
  probably that l3.iplen should be ipv4.MIN_LEN + l4.len.
 
  -- Murphy
 
  On Monday, June 20, 2011 09:42:07 AM Aaron Rosen wrote:
  Hi Murphy,
 
  wow... Opps...
 
  I'm trying the following: This doesn't return any errors but in
  wireshark the packet_outs say Malformed UDP packets.
 
  def send_udp_message():
 
 l4 = udp()
 l4.srcport = 1999
 l4.dstport = 1888
 l4.len = udp.MIN_LEN + len(hello_world)
 l4.set_payload(Hello_world)
 l4.arr = l4.tostring()
 
 l3 = ipv4()
 l3.iplen = ipv4.MIN_LEN
 l3.protocol = ipv4.UDP_PROTOCOL
 l3.dstip = ipstr_to_int(130.127.39.7);
 l3.srcip = ipstr_to_int(1.1.1.1);
 l3.set_payload(l4)
 
 l2 = ethernet()
 l2.set_payload(l3)
 l2.dst = octstr_to_array(00:00:00:00:00:02)
 l2.dst = 

Re: [nox-dev] Assertion on udp.checksum()

2011-08-08 Thread Murphy McCauley
Strange, I am positive that I have fixed this.  Maybe it just hasn't gotten 
pushed yet.

In ipv4.py around line 76, try something like...
self.id = int(time.time())  0x

-- Murphy

On Aug 8, 2011, at 3:08 PM, Aaron Rosen wrote:

 Thanks,
 
 I hate to bug you again but this looks fine to me? 
 
 iplen = 39 len(hello world)(11)  + udp header(8)  + 20 (ip_header) 
 17 =   UDP_PROTOCOL
 
   bad packet [69, 0, 39, 1312840938, 0, 64, 17, 0, 167837954, 167837953]
 00019|pyrt|ERR:unable to invoke a Python event handler:
 Traceback (most recent call last):
   File ./nox/lib/util.py, line 114, in f
 event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/sos.py, line 644, in packet_in_callback
 learn(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/sos.py, line 212, in learn
 forward(dpid, inport, packet, packet.arr, bufid, TRUNK_PORT)
   File ./nox/coreapps/examples/sos.py, line 333, in forward
 ret = install_agent_flows(dpid, inport, packet, buf, bufid, TRUNK_PORT);
   File ./nox/coreapps/examples/sos.py, line 594, in install_agent_flows
 inst.send_openflow_packet(dp_near, inform_dest.tostring(), 
 inst.Agents[dp_near]['inport'], inport)
   File ./nox/lib/packet/packet_base.py, line 118, in tostring
 return ''.join((buf, self.next.tostring()))
   File ./nox/lib/packet/packet_base.py, line 113, in tostring
 buf = self.hdr()
   File ./nox/lib/packet/ipv4.py, line 179, in hdr
 self.dstip)
 error: 'H' format requires 0 = number = 65535
 
 
 On Mon, Aug 8, 2011 at 5:32 PM, Murphy McCauley jam...@nau.edu wrote:
 I think you just have a field with a bad value.
 
 Try replacing the checksum function with something like this to help you spot 
 it:
 
 def checksum(self):
   try:
 data = struct.pack('!BBHHBBHII', (self.v  4) + self.hl, self.tos,
self.iplen, self.id,
(self.flags  13) | self.frag, self.ttl,
self.protocol, 0, self.srcip,
self.dstip)
 return checksum(data, 0)
   except:
 print bad packet,[(self.v  4) + self.hl,
 self.tos,
 self.iplen, self.id,
 (self.flags  13) | self.frag, self.ttl,
 self.protocol, 0, self.srcip,
 self.dstip]
 
 -- Murphy
 
 On Aug 8, 2011, at 1:50 PM, Aaron Rosen wrote:
 
 Hello, 
 
 I emailed the mailing list about this before but it seems like maybe 
 something changed or maybe I'm blind. Anyways, the following code generates 
 the following execption.  Any ideas what's going wrong? 
 
 
  def send_udp(mac, dstip, srcip, port, payload):
 l4 = udp()
 l4.srcport = 1999
 l4.dstport = 1998
 l4.len = udp.MIN_LEN  + len(hello world)
 l4.set_payload(hello world)
 l4.arr = l4.tostring()
 
 l3 = ipv4()
 l3.iplen = ipv4.MIN_LEN + l4.len
 l3.protocol = ipv4.UDP_PROTOCOL
 l3.dstip = ipstr_to_int(10.1.1.1)
 l3.srcip = ipstr_to_int(10.1.1.2)
 l3.set_payload(l4)
 
 l2 = ethernet()
 l2.set_payload(l3)
 l2.dst = octstr_to_array(00:00:00:00:00:01)
 l2.src = octstr_to_array(00:00:00:00:00:09)
 l2.type = ethernet.IP_TYPE
 l3.checksum()
 l4.csum = l4.checksum() 
 return l2
 
 
 00019|pyrt|ERR:unable to invoke a Python event handler:
 Traceback (most recent call last):
   File ./nox/lib/util.py, line 114, in f
 event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/sos.py, line 626, in packet_in_callback
 learn(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/sos.py, line 194, in learn
 forward(dpid, inport, packet, packet.arr, bufid, TRUNK_PORT)
   File ./nox/coreapps/examples/sos.py, line 315, in forward
 ret = install_agent_flows(dpid, inport, packet, buf, bufid, TRUNK_PORT);
   File ./nox/coreapps/examples/sos.py, line 575, in install_agent_flows
 inform_dest = send_udp(mac, dstip, srcip, port, payload)
   File ./nox/coreapps/examples/sos.py, line 89, in send_udp
 l3.checksum()
   File ./nox/lib/packet/ipv4.py, line 162, in checksum
 self.dstip)
 error: 'H' format requires 0 = number = 65535
 
 
 On Mon, Jun 20, 2011 at 1:59 PM, Aaron Rosen aro...@clemson.edu wrote:
 Thanks Murphy!
 
 You're right, that did the trick.
 
 Aaron
 
 On Mon, Jun 20, 2011 at 1:55 PM, Murphy McCauley jam...@nau.edu wrote:
  So I think the call to l3.checksum() is extraneous, but the real issue is
  probably that l3.iplen should be ipv4.MIN_LEN + l4.len.
 
  -- Murphy
 
  On Monday, June 20, 2011 09:42:07 AM Aaron Rosen wrote:
  Hi Murphy,
 
  wow... Opps...
 
  I'm trying the following: This doesn't return any errors but in
  wireshark the packet_outs say Malformed UDP packets.
 
  def send_udp_message():
 
 l4 = udp()
 l4.srcport = 1999
 l4.dstport = 1888
 l4.len = udp.MIN_LEN + len(hello_world)
 l4.set_payload(Hello_world)
 l4.arr = l4.tostring()
 
 l3 = 

Re: [nox-dev] Assertion on udp.checksum()

2011-08-08 Thread Aaron Rosen
Thanks that did the trick.

Yea I thought this was strange too since this used to work a while ago.

Out of curiosity what is id in ipv4.py I see that it holds the time but why
is that needed?

Thanks again,

Aaron

On Mon, Aug 8, 2011 at 6:13 PM, Murphy McCauley jam...@nau.edu wrote:

 Strange, I am positive that I have fixed this.  Maybe it just hasn't gotten
 pushed yet.

 In ipv4.py around line 76, try something like...
 self.id = int(time.time())  0x

 -- Murphy

 On Aug 8, 2011, at 3:08 PM, Aaron Rosen wrote:

 Thanks,

 I hate to bug you again but this looks fine to me?

 iplen = 39 len(hello world)(11)  + udp header(8)  + 20 (ip_header)
 17 =   UDP_PROTOCOL

   bad packet [69, 0, 39, 1312840938, 0, 64, 17, 0, 167837954, 167837953]
 00019|pyrt|ERR:unable to invoke a Python event handler:
 Traceback (most recent call last):
   File ./nox/lib/util.py, line 114, in f
 event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/sos.py, line 644, in packet_in_callback
 learn(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/sos.py, line 212, in learn
 forward(dpid, inport, packet, packet.arr, bufid, TRUNK_PORT)
   File ./nox/coreapps/examples/sos.py, line 333, in forward
 ret = install_agent_flows(dpid, inport, packet, buf, bufid,
 TRUNK_PORT);
   File ./nox/coreapps/examples/sos.py, line 594, in install_agent_flows
 inst.send_openflow_packet(dp_near, inform_dest.tostring(),
 inst.Agents[dp_near]['inport'], inport)
   File ./nox/lib/packet/packet_base.py, line 118, in tostring
 return ''.join((buf, self.next.tostring()))
   File ./nox/lib/packet/packet_base.py, line 113, in tostring
 buf = self.hdr()
   File ./nox/lib/packet/ipv4.py, line 179, in hdr
 self.dstip)
 error: 'H' format requires 0 = number = 65535


 On Mon, Aug 8, 2011 at 5:32 PM, Murphy McCauley jam...@nau.edu wrote:

 I think you just have a field with a bad value.

 Try replacing the checksum function with something like this to help you
 spot it:

 def checksum(self):
   try:
 data = struct.pack('!BBHHBBHII', (self.v  4) + self.hl, self.tos,
self.iplen, self.id,
(self.flags  13) | self.frag, self.ttl,
self.protocol, 0, self.srcip,
self.dstip)
 return checksum(data, 0)
   except:
 print bad packet,[(self.v  4) + self.hl,
 self.tos,
 self.iplen, self.id,
 (self.flags  13) | self.frag, self.ttl,
 self.protocol, 0, self.srcip,
 self.dstip]

 -- Murphy

 On Aug 8, 2011, at 1:50 PM, Aaron Rosen wrote:

 Hello,

 I emailed the mailing list about this before but it seems like maybe
 something changed or maybe I'm blind. Anyways, the following code generates
 the following execption.  Any ideas what's going wrong?


  def send_udp(mac, dstip, srcip, port, payload):
 l4 = udp()
 l4.srcport = 1999
 l4.dstport = 1998
 l4.len = udp.MIN_LEN  + len(hello world)
 l4.set_payload(hello world)
 l4.arr = l4.tostring()

 l3 = ipv4()
 l3.iplen = ipv4.MIN_LEN + l4.len
 l3.protocol = ipv4.UDP_PROTOCOL
 l3.dstip = ipstr_to_int(10.1.1.1)
 l3.srcip = ipstr_to_int(10.1.1.2)
 l3.set_payload(l4)

 l2 = ethernet()
 l2.set_payload(l3)
 l2.dst = octstr_to_array(00:00:00:00:00:01)
 l2.src = octstr_to_array(00:00:00:00:00:09)
 l2.type = ethernet.IP_TYPE
 l3.checksum()
 l4.csum = l4.checksum()
 return l2


 00019|pyrt|ERR:unable to invoke a Python event handler:
 Traceback (most recent call last):
   File ./nox/lib/util.py, line 114, in f
 event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/sos.py, line 626, in packet_in_callback
 learn(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/sos.py, line 194, in learn
 forward(dpid, inport, packet, packet.arr, bufid, TRUNK_PORT)
   File ./nox/coreapps/examples/sos.py, line 315, in forward
 ret = install_agent_flows(dpid, inport, packet, buf, bufid,
 TRUNK_PORT);
   File ./nox/coreapps/examples/sos.py, line 575, in install_agent_flows
 inform_dest = send_udp(mac, dstip, srcip, port, payload)
   File ./nox/coreapps/examples/sos.py, line 89, in send_udp
 l3.checksum()
   File ./nox/lib/packet/ipv4.py, line 162, in checksum
 self.dstip)
 error: 'H' format requires 0 = number = 65535


 On Mon, Jun 20, 2011 at 1:59 PM, Aaron Rosen aro...@clemson.edu wrote:

 Thanks Murphy!

 You're right, that did the trick.

 Aaron

 On Mon, Jun 20, 2011 at 1:55 PM, Murphy McCauley jam...@nau.edu wrote:
  So I think the call to l3.checksum() is extraneous, but the real issue
 is
  probably that l3.iplen should be ipv4.MIN_LEN + l4.len.
 
  -- Murphy
 
  On Monday, June 20, 2011 09:42:07 AM Aaron Rosen wrote:
  Hi Murphy,
 
  wow... Opps...
 
  I'm trying the following: This doesn't return any errors but in
  

Re: [nox-dev] Assertion on udp.checksum()

2011-08-08 Thread Murphy McCauley
It's the identification field of the IPv4 header.  Mostly this is used to match 
up fragments (which should all retain the same value).  So time.time() isn't 
really a very good value for it anyway, as it should be relatively unique, but 
int(time.time()) is only unique for packets sent in different seconds which 
seems like a fairly unsafe assumption.  We should probably just use a counter.  
Which, looking at the code... it looks like may have been done in the past 
(ip_id field) and then changed.  It should probably be changed back. :)  I 
think that's what I did when I fixed it before; it must just have not made it 
out of some experimental branch.  Sorry it got you!

-- Murphy

On Aug 8, 2011, at 3:18 PM, Aaron Rosen wrote:

 Thanks that did the trick.
 
 Yea I thought this was strange too since this used to work a while ago. 
 
 Out of curiosity what is id in ipv4.py I see that it holds the time but why 
 is that needed? 
 
 Thanks again, 
 
 Aaron
 
 On Mon, Aug 8, 2011 at 6:13 PM, Murphy McCauley jam...@nau.edu wrote:
 Strange, I am positive that I have fixed this.  Maybe it just hasn't gotten 
 pushed yet.
 
 In ipv4.py around line 76, try something like...
 self.id = int(time.time())  0x
 
 -- Murphy
 
 On Aug 8, 2011, at 3:08 PM, Aaron Rosen wrote:
 
 Thanks,
 
 I hate to bug you again but this looks fine to me? 
 
 iplen = 39 len(hello world)(11)  + udp header(8)  + 20 (ip_header) 
 17 =   UDP_PROTOCOL
 
   bad packet [69, 0, 39, 1312840938, 0, 64, 17, 0, 167837954, 167837953]
 00019|pyrt|ERR:unable to invoke a Python event handler:
 Traceback (most recent call last):
   File ./nox/lib/util.py, line 114, in f
 event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/sos.py, line 644, in packet_in_callback
 learn(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/sos.py, line 212, in learn
 forward(dpid, inport, packet, packet.arr, bufid, TRUNK_PORT)
   File ./nox/coreapps/examples/sos.py, line 333, in forward
 ret = install_agent_flows(dpid, inport, packet, buf, bufid, TRUNK_PORT);
   File ./nox/coreapps/examples/sos.py, line 594, in install_agent_flows
 inst.send_openflow_packet(dp_near, inform_dest.tostring(), 
 inst.Agents[dp_near]['inport'], inport)
   File ./nox/lib/packet/packet_base.py, line 118, in tostring
 return ''.join((buf, self.next.tostring()))
   File ./nox/lib/packet/packet_base.py, line 113, in tostring
 buf = self.hdr()
   File ./nox/lib/packet/ipv4.py, line 179, in hdr
 self.dstip)
 error: 'H' format requires 0 = number = 65535
 
 
 On Mon, Aug 8, 2011 at 5:32 PM, Murphy McCauley jam...@nau.edu wrote:
 I think you just have a field with a bad value.
 
 Try replacing the checksum function with something like this to help you 
 spot it:
 
 def checksum(self):
   try:
 data = struct.pack('!BBHHBBHII', (self.v  4) + self.hl, self.tos,
self.iplen, self.id,
(self.flags  13) | self.frag, self.ttl,
self.protocol, 0, self.srcip,
self.dstip)
 return checksum(data, 0)
   except:
 print bad packet,[(self.v  4) + self.hl,
 self.tos,
 self.iplen, self.id,
 (self.flags  13) | self.frag, self.ttl,
 self.protocol, 0, self.srcip,
 self.dstip]
 
 -- Murphy
 
 On Aug 8, 2011, at 1:50 PM, Aaron Rosen wrote:
 
 Hello, 
 
 I emailed the mailing list about this before but it seems like maybe 
 something changed or maybe I'm blind. Anyways, the following code generates 
 the following execption.  Any ideas what's going wrong? 
 
 
  def send_udp(mac, dstip, srcip, port, payload):
 l4 = udp()
 l4.srcport = 1999
 l4.dstport = 1998
 l4.len = udp.MIN_LEN  + len(hello world)
 l4.set_payload(hello world)
 l4.arr = l4.tostring()
 
 l3 = ipv4()
 l3.iplen = ipv4.MIN_LEN + l4.len
 l3.protocol = ipv4.UDP_PROTOCOL
 l3.dstip = ipstr_to_int(10.1.1.1)
 l3.srcip = ipstr_to_int(10.1.1.2)
 l3.set_payload(l4)
 
 l2 = ethernet()
 l2.set_payload(l3)
 l2.dst = octstr_to_array(00:00:00:00:00:01)
 l2.src = octstr_to_array(00:00:00:00:00:09)
 l2.type = ethernet.IP_TYPE
 l3.checksum()
 l4.csum = l4.checksum() 
 return l2
 
 
 00019|pyrt|ERR:unable to invoke a Python event handler:
 Traceback (most recent call last):
   File ./nox/lib/util.py, line 114, in f
 event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/sos.py, line 626, in packet_in_callback
 learn(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/sos.py, line 194, in learn
 forward(dpid, inport, packet, packet.arr, bufid, TRUNK_PORT)
   File ./nox/coreapps/examples/sos.py, line 315, in forward
 ret = install_agent_flows(dpid, inport, packet, buf, bufid, TRUNK_PORT);
   File ./nox/coreapps/examples/sos.py, line 575, in install_agent_flows
 

Re: [nox-dev] Assertion on udp.checksum()

2011-06-20 Thread Murphy McCauley
Unfortunately, your tweak breaks the logic of the assert.

The assert is asserting that self.next is a packet_base of some sort OR a 
string.  You've set it to a string, so... it should be a string.  So it should 
definitely not be a packet_base.  So the first of your asserts will always 
fail.  

For the sake of testing, would you please comment out the first of your two 
asserts (leaving only the one against type('')), and let me know the result?

-- Murphy

On Monday, June 20, 2011 09:22:23 AM Aaron Rosen wrote:
 Hi Murphy,
 
 I'm using zaku but the one in destiny looked the same to be.
 
 I changed to assert to be on two lines so I could see which one was firing.
 
 def checksum(self):
 #assert(isinstance(self.next, packet_base) or type(self.next)
 == type(''))
 assert(isinstance(self.next, packet_base))
 assert(type(self.next) == type(''))
 
 
 Thanks,
 
 Aaron
 
 On Mon, Jun 20, 2011 at 12:19 PM, Murphy McCauley jam...@nau.edu wrote:
  What NOX are you using?  Your udp.py does not seem to be the one in zaku
  or destiny...
  
  -- Murphy
  
  On Sunday, June 19, 2011 03:34:20 PM Aaron Rosen wrote:
  Hello,
  
  I'm trying to send udp packets from my controller but I'm getting the
  following assertion when I call udp().checksum(). I was hoping someone
  could point out where I'm going wrong.
  
  Thanks,
  
  Aaron
  
  Traceback (most recent call last):
File ./nox/lib/util.py, line 116, in f
  event.total_len, buffer_id, packet)
File ./nox/coreapps/examples/sos.py, line 299, in packet_in_callback
  learn(dpid, inport, packet)
File ./nox/coreapps/examples/sos.py, line 56, in learn
  send_packet = send_udp_message()
File ./nox/coreapps/examples/sos.py, line 48, in send_udp_message
  l4.csum = l4.checksum()
File ./nox/lib/packet/udp.py, line 111, in checksum
  assert(isinstance(self.next, packet_base))
  AssertionError
  
  
  def send_udp_message():
  
  l4 = udp()
  l4.srcport = 1999
  l4.dstport = 1888
  l4.len = udp.MIN_LEN + len(hello_world)
  l4.set_payload(Hello_world)
  
  l3 = ipv4()
  l3.iplen = ipv4.MIN_LEN
  l3.protocol = ipv4.UDP_PROTOCOL
  l3.dstip = ipstr_to_int(130.127.39.7);
  l3.srcip = ipstr_to_int(1.1.1.1);
  l3.set_payload(l4)
  
  l2 = ethernet()
  l2.set_payload(l3)
  l2.dst = octstr_to_array(00:00:00:00:00:02)
  l2.dst = octstr_to_array(a1:00:04:00:0a:04)
  l2.type = ethernet.IP_TYPE
  l3.checksum()
  l4.csum = l4.checksum()
  
  return l2
  
  
  
  send_packet = send_udp_message()
  inst.send_openflow_packet(dpid, send_packet.tostring(),
  openflow.OFPP_FLOOD, inport)
___
nox-dev mailing list
nox-dev@noxrepo.org
http://noxrepo.org/mailman/listinfo/nox-dev


Re: [nox-dev] Assertion on udp.checksum()

2011-06-20 Thread Aaron Rosen
Hi Murphy,

wow... Opps...

I'm trying the following: This doesn't return any errors but in
wireshark the packet_outs say Malformed UDP packets.

def send_udp_message():

   l4 = udp()
   l4.srcport = 1999
   l4.dstport = 1888
   l4.len = udp.MIN_LEN + len(hello_world)
   l4.set_payload(Hello_world)
   l4.arr = l4.tostring()

   l3 = ipv4()
   l3.iplen = ipv4.MIN_LEN
   l3.protocol = ipv4.UDP_PROTOCOL
   l3.dstip = ipstr_to_int(130.127.39.7);
   l3.srcip = ipstr_to_int(1.1.1.1);
   l3.set_payload(l4)

   l2 = ethernet()
   l2.set_payload(l3)
   l2.dst = octstr_to_array(00:00:00:00:00:02)
   l2.dst = octstr_to_array(a1:00:04:00:0a:04)
   l2.type = ethernet.IP_TYPE
   l3.checksum()
   l4.csum = l4.checksum()

   return l2


inst.send_openflow_packet(dpid, send_udp_message().tostring(),
openflow.OFPP_FLOOD, inport)
source = mac_to_str(packet.src)



On Mon, Jun 20, 2011 at 12:29 PM, Murphy McCauley jam...@nau.edu wrote:
 Unfortunately, your tweak breaks the logic of the assert.

 The assert is asserting that self.next is a packet_base of some sort OR a
 string.  You've set it to a string, so... it should be a string.  So it should
 definitely not be a packet_base.  So the first of your asserts will always 
 fail.

 For the sake of testing, would you please comment out the first of your two
 asserts (leaving only the one against type('')), and let me know the result?

 -- Murphy

 On Monday, June 20, 2011 09:22:23 AM Aaron Rosen wrote:
 Hi Murphy,

 I'm using zaku but the one in destiny looked the same to be.

 I changed to assert to be on two lines so I could see which one was firing.

     def checksum(self):
         #assert(isinstance(self.next, packet_base) or type(self.next)
 == type(''))
         assert(isinstance(self.next, packet_base))
         assert(type(self.next) == type(''))


 Thanks,

 Aaron

 On Mon, Jun 20, 2011 at 12:19 PM, Murphy McCauley jam...@nau.edu wrote:
  What NOX are you using?  Your udp.py does not seem to be the one in zaku
  or destiny...
 
  -- Murphy
 
  On Sunday, June 19, 2011 03:34:20 PM Aaron Rosen wrote:
  Hello,
 
  I'm trying to send udp packets from my controller but I'm getting the
  following assertion when I call udp().checksum(). I was hoping someone
  could point out where I'm going wrong.
 
  Thanks,
 
  Aaron
 
  Traceback (most recent call last):
    File ./nox/lib/util.py, line 116, in f
      event.total_len, buffer_id, packet)
    File ./nox/coreapps/examples/sos.py, line 299, in packet_in_callback
      learn(dpid, inport, packet)
    File ./nox/coreapps/examples/sos.py, line 56, in learn
      send_packet = send_udp_message()
    File ./nox/coreapps/examples/sos.py, line 48, in send_udp_message
      l4.csum = l4.checksum()
    File ./nox/lib/packet/udp.py, line 111, in checksum
      assert(isinstance(self.next, packet_base))
  AssertionError
 
 
  def send_udp_message():
 
      l4 = udp()
      l4.srcport = 1999
      l4.dstport = 1888
      l4.len = udp.MIN_LEN + len(hello_world)
      l4.set_payload(Hello_world)
 
      l3 = ipv4()
      l3.iplen = ipv4.MIN_LEN
      l3.protocol = ipv4.UDP_PROTOCOL
      l3.dstip = ipstr_to_int(130.127.39.7);
      l3.srcip = ipstr_to_int(1.1.1.1);
      l3.set_payload(l4)
 
      l2 = ethernet()
      l2.set_payload(l3)
      l2.dst = octstr_to_array(00:00:00:00:00:02)
      l2.dst = octstr_to_array(a1:00:04:00:0a:04)
      l2.type = ethernet.IP_TYPE
      l3.checksum()
      l4.csum = l4.checksum()
 
      return l2
 
 
  
      send_packet = send_udp_message()
      inst.send_openflow_packet(dpid, send_packet.tostring(),
  openflow.OFPP_FLOOD, inport)




-- 
Aaron O. Rosen
Masters Student - Network Communication
306B Fluor Daniel
___
nox-dev mailing list
nox-dev@noxrepo.org
http://noxrepo.org/mailman/listinfo/nox-dev


Re: [nox-dev] Assertion on udp.checksum()

2011-06-20 Thread Aaron Rosen
Thanks Murphy!

You're right, that did the trick.

Aaron

On Mon, Jun 20, 2011 at 1:55 PM, Murphy McCauley jam...@nau.edu wrote:
 So I think the call to l3.checksum() is extraneous, but the real issue is
 probably that l3.iplen should be ipv4.MIN_LEN + l4.len.

 -- Murphy

 On Monday, June 20, 2011 09:42:07 AM Aaron Rosen wrote:
 Hi Murphy,

 wow... Opps...

 I'm trying the following: This doesn't return any errors but in
 wireshark the packet_outs say Malformed UDP packets.

 def send_udp_message():

    l4 = udp()
    l4.srcport = 1999
    l4.dstport = 1888
    l4.len = udp.MIN_LEN + len(hello_world)
    l4.set_payload(Hello_world)
    l4.arr = l4.tostring()

    l3 = ipv4()
    l3.iplen = ipv4.MIN_LEN
    l3.protocol = ipv4.UDP_PROTOCOL
    l3.dstip = ipstr_to_int(130.127.39.7);
    l3.srcip = ipstr_to_int(1.1.1.1);
    l3.set_payload(l4)

    l2 = ethernet()
    l2.set_payload(l3)
    l2.dst = octstr_to_array(00:00:00:00:00:02)
    l2.dst = octstr_to_array(a1:00:04:00:0a:04)
    l2.type = ethernet.IP_TYPE
    l3.checksum()
    l4.csum = l4.checksum()

    return l2

 
     inst.send_openflow_packet(dpid, send_udp_message().tostring(),
 openflow.OFPP_FLOOD, inport)
     source = mac_to_str(packet.src)

 On Mon, Jun 20, 2011 at 12:29 PM, Murphy McCauley jam...@nau.edu wrote:
  Unfortunately, your tweak breaks the logic of the assert.
 
  The assert is asserting that self.next is a packet_base of some sort OR a
  string.  You've set it to a string, so... it should be a string.  So it
  should definitely not be a packet_base.  So the first of your asserts
  will always fail.
 
  For the sake of testing, would you please comment out the first of your
  two asserts (leaving only the one against type('')), and let me know the
  result?
 
  -- Murphy
 
  On Monday, June 20, 2011 09:22:23 AM Aaron Rosen wrote:
  Hi Murphy,
 
  I'm using zaku but the one in destiny looked the same to be.
 
  I changed to assert to be on two lines so I could see which one was
  firing.
 
      def checksum(self):
          #assert(isinstance(self.next, packet_base) or type(self.next)
  == type(''))
          assert(isinstance(self.next, packet_base))
          assert(type(self.next) == type(''))
 
 
  Thanks,
 
  Aaron
 
  On Mon, Jun 20, 2011 at 12:19 PM, Murphy McCauley jam...@nau.edu wrote:
   What NOX are you using?  Your udp.py does not seem to be the one in
   zaku or destiny...
  
   -- Murphy
  
   On Sunday, June 19, 2011 03:34:20 PM Aaron Rosen wrote:
   Hello,
  
   I'm trying to send udp packets from my controller but I'm getting the
   following assertion when I call udp().checksum(). I was hoping
   someone could point out where I'm going wrong.
  
   Thanks,
  
   Aaron
  
   Traceback (most recent call last):
     File ./nox/lib/util.py, line 116, in f
       event.total_len, buffer_id, packet)
     File ./nox/coreapps/examples/sos.py, line 299, in
   packet_in_callback learn(dpid, inport, packet)
     File ./nox/coreapps/examples/sos.py, line 56, in learn
       send_packet = send_udp_message()
     File ./nox/coreapps/examples/sos.py, line 48, in send_udp_message
       l4.csum = l4.checksum()
     File ./nox/lib/packet/udp.py, line 111, in checksum
       assert(isinstance(self.next, packet_base))
   AssertionError
  
  
   def send_udp_message():
  
       l4 = udp()
       l4.srcport = 1999
       l4.dstport = 1888
       l4.len = udp.MIN_LEN + len(hello_world)
       l4.set_payload(Hello_world)
  
       l3 = ipv4()
       l3.iplen = ipv4.MIN_LEN
       l3.protocol = ipv4.UDP_PROTOCOL
       l3.dstip = ipstr_to_int(130.127.39.7);
       l3.srcip = ipstr_to_int(1.1.1.1);
       l3.set_payload(l4)
  
       l2 = ethernet()
       l2.set_payload(l3)
       l2.dst = octstr_to_array(00:00:00:00:00:02)
       l2.dst = octstr_to_array(a1:00:04:00:0a:04)
       l2.type = ethernet.IP_TYPE
       l3.checksum()
       l4.csum = l4.checksum()
  
       return l2
  
  
   
       send_packet = send_udp_message()
       inst.send_openflow_packet(dpid, send_packet.tostring(),
   openflow.OFPP_FLOOD, inport)




-- 
Aaron O. Rosen
Masters Student - Network Communication
306B Fluor Daniel
___
nox-dev mailing list
nox-dev@noxrepo.org
http://noxrepo.org/mailman/listinfo/nox-dev