Re: [nox-dev] Type Error Question

2011-03-06 Thread Aaron Rosen
Sorry,  I was incorrect I am getting packet_out's.

Aaron

On Sat, Mar 5, 2011 at 10:50 PM, Aaron Rosen aro...@clemson.edu wrote:



 I've also tried this which yields the same results:
  if packet.next.protocol == 0x4:
 print UNENCAPED1 
 packet.next = packet.next.next
 self.send_openflow_packet(dpid, packet.arr,openflow.OFPP_FLOOD
 , inport)

 self.send_openflow_packet(dpid,
 packet.tostring(),openflow.OFPP_FLOOD , inport)

 On Sat, Mar 5, 2011 at 10:38 PM, Aaron Rosen aro...@clemson.edu wrote:

 Hey Guys I have one more question:

 I'm receiving IPIP packets and I want to unencapsulate them. I'm receiving
 these packets as packet_ins and I have the follow code to handle this:

 if packet.next.protocol == 0x4:
 print UNENCAPED1 
 packet.next = packet.next.next
 self.send_openflow_packet(dpid, packet.tostring(),
 openflow.OFPP_FLOOD)
 print UNENCAPED2 
 return CONTINUE


 In NOX I see:

 UNENCAPED1
 UNENCAPED2

 But in wireshark a packet_out event is never generated.

 Any idea whats going wrong here?  (attached is one of the packet_in events
 that I'm receiving I'm not sure it will be helpful). I've also changed the
 follow code so that my controller receives the full packet from a packet_in
 event.)


 diff --git a/src/lib/openflow.cc b/src/lib/openflow.cc
 index e23cb20..9b5a023 100644
 --- a/src/lib/openflow.cc
 +++ b/src/lib/openflow.cc
 @@ -598,7 +598,7 @@ int Openflow_connection::send_
 switch_config() {
 osc.header.length = htons(sizeof osc);
 osc.header.xid = openflow_pack::get_xid();
 osc.flags =  0;
 -osc.miss_send_len = htons(OFP_DEFAULT_MISS_SEND_LEN);
 +osc.miss_send_len = htons(UINT16_MAX);

 return send_openflow(osc.header, false);


 Thanks,

 Aaron


 On Tue, Mar 1, 2011 at 7:50 PM, James Murphy McCauley 
 jam...@nau.eduwrote:

 You CAN change how much of the packet gets forwarded from a miss, but
 this is done in the switch negotiation and there's no really clean way
 to change it (it's a macro in one of the openflow headers).  You're
 better off installing a flow.

 In that case, if you're not manipulating the packets at all (it doesn't
 seem like you are), you can also then generally send them back out by
 buffer id, and not actually have to send the full packet both ways
 to/from the controller.  Also, if you just want to spy on traffic and
 not alter it, you could set an action to flood the packet as well as the
 action to send it to the controller.

 -- Murphy

 On Tue, 2011-03-01 at 19:36 -0500, Aaron Rosen wrote:
  These packets are from non-matches. So I guess I'm only getting
  128Bytes of the packet from this? I guess I should install a rule that
  sends this packets to the controller if I want the full packet.
 
  Thanks,
 
  Aaron
 
  On Tue, Mar 1, 2011 at 7:28 PM, James Murphy McCauley
  jam...@nau.edu wrote:
  I didn't just add the + str(self.type).  I also switched it
  to a print
  from a call to self.msg() (which doesn't exist because the TCP
  option
  class isn't a subclass of the main packet class).  You should
  do this.
 
  BUT... now I am suspicious.  How are you getting these
  packets?  Are
  they from non-matches, or did you install a flow with a
  send-to-controller action?  In the former case, the packet is
  almost
  surely truncated because only 128 bytes of a packet from a
  miss are sent
  by default.  In the latter, are you sure you specified a large
  enough
  size when installing the flow?
 
  -- Murphy
 
 
  On Tue, 2011-03-01 at 19:18 -0500, Aaron Rosen wrote:
   If I pass packet.arr that still doesn't work. I don't get an
  Error
   message but tcpdump says:
  
   19:16:26.829891 IP truncated-ip - 730 bytes missing!
   130.127.39.173.58832  130.127.39.235.ssh: P
   2569410772:2569411564(792) ack 3106665167 win 12
  nop,nop,timestamp
   10172901 47037426
  
   Also adding that +str(self.type) their doesn't seem to print
  out the
   type at that point.
  
  
   00132|pyrt|ERR:unable to invoke a Python event handler:
   Traceback (most recent call last):
 File ./nox/lib/util.py, line 113, in f
   event.total_len, buffer_id, packet)
 File ./nox/coreapps/examples/aaronswitch.py, line 182,
  in packet_in_callback
   self.forward(dpid, inport, packet, packet.arr, bufid)
 File ./nox/coreapps/examples/aaronswitch.py, line 67, in
  forward
   self.send_openflow_packet(dpid,
   packet.tostring(),openflow.OFPP_FLOOD , inport)
 File ./nox/lib/packet/packet_base.py, line 114, in
  tostring
   return ''.join((buf, 

Re: [nox-dev] Type Error Question

2011-03-05 Thread Aaron Rosen
Hey Guys I have one more question:

I'm receiving IPIP packets and I want to unencapsulate them. I'm receiving
these packets as packet_ins and I have the follow code to handle this:

if packet.next.protocol == 0x4:
print UNENCAPED1 
packet.next = packet.next.next
self.send_openflow_packet(dpid, packet.tostring(),
openflow.OFPP_FLOOD)
print UNENCAPED2 
return CONTINUE


In NOX I see:

UNENCAPED1
UNENCAPED2

But in wireshark a packet_out event is never generated.

Any idea whats going wrong here?  (attached is one of the packet_in events
that I'm receiving I'm not sure it will be helpful). I've also changed the
follow code so that my controller receives the full packet from a packet_in
event.)

diff --git a/src/lib/openflow.cc b/src/lib/openflow.cc
index e23cb20..9b5a023 100644
--- a/src/lib/openflow.cc
+++ b/src/lib/openflow.cc
@@ -598,7 +598,7 @@ int Openflow_connection::send_
switch_config() {
osc.header.length = htons(sizeof osc);
osc.header.xid = openflow_pack::get_xid();
osc.flags =  0;
-osc.miss_send_len = htons(OFP_DEFAULT_MISS_SEND_LEN);
+osc.miss_send_len = htons(UINT16_MAX);

return send_openflow(osc.header, false);


Thanks,

Aaron

On Tue, Mar 1, 2011 at 7:50 PM, James Murphy McCauley jam...@nau.eduwrote:

 You CAN change how much of the packet gets forwarded from a miss, but
 this is done in the switch negotiation and there's no really clean way
 to change it (it's a macro in one of the openflow headers).  You're
 better off installing a flow.

 In that case, if you're not manipulating the packets at all (it doesn't
 seem like you are), you can also then generally send them back out by
 buffer id, and not actually have to send the full packet both ways
 to/from the controller.  Also, if you just want to spy on traffic and
 not alter it, you could set an action to flood the packet as well as the
 action to send it to the controller.

 -- Murphy

 On Tue, 2011-03-01 at 19:36 -0500, Aaron Rosen wrote:
  These packets are from non-matches. So I guess I'm only getting
  128Bytes of the packet from this? I guess I should install a rule that
  sends this packets to the controller if I want the full packet.
 
  Thanks,
 
  Aaron
 
  On Tue, Mar 1, 2011 at 7:28 PM, James Murphy McCauley
  jam...@nau.edu wrote:
  I didn't just add the + str(self.type).  I also switched it
  to a print
  from a call to self.msg() (which doesn't exist because the TCP
  option
  class isn't a subclass of the main packet class).  You should
  do this.
 
  BUT... now I am suspicious.  How are you getting these
  packets?  Are
  they from non-matches, or did you install a flow with a
  send-to-controller action?  In the former case, the packet is
  almost
  surely truncated because only 128 bytes of a packet from a
  miss are sent
  by default.  In the latter, are you sure you specified a large
  enough
  size when installing the flow?
 
  -- Murphy
 
 
  On Tue, 2011-03-01 at 19:18 -0500, Aaron Rosen wrote:
   If I pass packet.arr that still doesn't work. I don't get an
  Error
   message but tcpdump says:
  
   19:16:26.829891 IP truncated-ip - 730 bytes missing!
   130.127.39.173.58832  130.127.39.235.ssh: P
   2569410772:2569411564(792) ack 3106665167 win 12
  nop,nop,timestamp
   10172901 47037426
  
   Also adding that +str(self.type) their doesn't seem to print
  out the
   type at that point.
  
  
   00132|pyrt|ERR:unable to invoke a Python event handler:
   Traceback (most recent call last):
 File ./nox/lib/util.py, line 113, in f
   event.total_len, buffer_id, packet)
 File ./nox/coreapps/examples/aaronswitch.py, line 182,
  in packet_in_callback
   self.forward(dpid, inport, packet, packet.arr, bufid)
 File ./nox/coreapps/examples/aaronswitch.py, line 67, in
  forward
   self.send_openflow_packet(dpid,
   packet.tostring(),openflow.OFPP_FLOOD , inport)
 File ./nox/lib/packet/packet_base.py, line 114, in
  tostring
   return ''.join((buf, self.next.tostring()))
 File ./nox/lib/packet/packet_base.py, line 114, in
  tostring
   return ''.join((buf, self.next.tostring()))
 File ./nox/lib/packet/packet_base.py, line 109, in
  tostring
   buf = self.hdr()
 File ./nox/lib/packet/tcp.py, line 215, in hdr
   packet += option.to_bytes()
 File ./nox/lib/packet/tcp.py, line 78, in to_bytes
   self.msg('(tcp_opt to_bytes) warning, unknown option') +
  str(self.type)
   AttributeError: tcp_opt instance has no attribute 

Re: [nox-dev] Type Error Question

2011-03-05 Thread Aaron Rosen
I've also tried this which yields the same results:
 if packet.next.protocol == 0x4:
print UNENCAPED1 
packet.next = packet.next.next
self.send_openflow_packet(dpid, packet.arr,openflow.OFPP_FLOOD ,
inport)
self.send_openflow_packet(dpid,
packet.tostring(),openflow.OFPP_FLOOD , inport)

On Sat, Mar 5, 2011 at 10:38 PM, Aaron Rosen aro...@clemson.edu wrote:

 Hey Guys I have one more question:

 I'm receiving IPIP packets and I want to unencapsulate them. I'm receiving
 these packets as packet_ins and I have the follow code to handle this:

 if packet.next.protocol == 0x4:
 print UNENCAPED1 
 packet.next = packet.next.next
 self.send_openflow_packet(dpid, packet.tostring(),
 openflow.OFPP_FLOOD)
 print UNENCAPED2 
 return CONTINUE


 In NOX I see:

 UNENCAPED1
 UNENCAPED2

 But in wireshark a packet_out event is never generated.

 Any idea whats going wrong here?  (attached is one of the packet_in events
 that I'm receiving I'm not sure it will be helpful). I've also changed the
 follow code so that my controller receives the full packet from a packet_in
 event.)


 diff --git a/src/lib/openflow.cc b/src/lib/openflow.cc
 index e23cb20..9b5a023 100644
 --- a/src/lib/openflow.cc
 +++ b/src/lib/openflow.cc
 @@ -598,7 +598,7 @@ int Openflow_connection::send_
 switch_config() {
 osc.header.length = htons(sizeof osc);
 osc.header.xid = openflow_pack::get_xid();
 osc.flags =  0;
 -osc.miss_send_len = htons(OFP_DEFAULT_MISS_SEND_LEN);
 +osc.miss_send_len = htons(UINT16_MAX);

 return send_openflow(osc.header, false);


 Thanks,

 Aaron


 On Tue, Mar 1, 2011 at 7:50 PM, James Murphy McCauley jam...@nau.eduwrote:

 You CAN change how much of the packet gets forwarded from a miss, but
 this is done in the switch negotiation and there's no really clean way
 to change it (it's a macro in one of the openflow headers).  You're
 better off installing a flow.

 In that case, if you're not manipulating the packets at all (it doesn't
 seem like you are), you can also then generally send them back out by
 buffer id, and not actually have to send the full packet both ways
 to/from the controller.  Also, if you just want to spy on traffic and
 not alter it, you could set an action to flood the packet as well as the
 action to send it to the controller.

 -- Murphy

 On Tue, 2011-03-01 at 19:36 -0500, Aaron Rosen wrote:
  These packets are from non-matches. So I guess I'm only getting
  128Bytes of the packet from this? I guess I should install a rule that
  sends this packets to the controller if I want the full packet.
 
  Thanks,
 
  Aaron
 
  On Tue, Mar 1, 2011 at 7:28 PM, James Murphy McCauley
  jam...@nau.edu wrote:
  I didn't just add the + str(self.type).  I also switched it
  to a print
  from a call to self.msg() (which doesn't exist because the TCP
  option
  class isn't a subclass of the main packet class).  You should
  do this.
 
  BUT... now I am suspicious.  How are you getting these
  packets?  Are
  they from non-matches, or did you install a flow with a
  send-to-controller action?  In the former case, the packet is
  almost
  surely truncated because only 128 bytes of a packet from a
  miss are sent
  by default.  In the latter, are you sure you specified a large
  enough
  size when installing the flow?
 
  -- Murphy
 
 
  On Tue, 2011-03-01 at 19:18 -0500, Aaron Rosen wrote:
   If I pass packet.arr that still doesn't work. I don't get an
  Error
   message but tcpdump says:
  
   19:16:26.829891 IP truncated-ip - 730 bytes missing!
   130.127.39.173.58832  130.127.39.235.ssh: P
   2569410772:2569411564(792) ack 3106665167 win 12
  nop,nop,timestamp
   10172901 47037426
  
   Also adding that +str(self.type) their doesn't seem to print
  out the
   type at that point.
  
  
   00132|pyrt|ERR:unable to invoke a Python event handler:
   Traceback (most recent call last):
 File ./nox/lib/util.py, line 113, in f
   event.total_len, buffer_id, packet)
 File ./nox/coreapps/examples/aaronswitch.py, line 182,
  in packet_in_callback
   self.forward(dpid, inport, packet, packet.arr, bufid)
 File ./nox/coreapps/examples/aaronswitch.py, line 67, in
  forward
   self.send_openflow_packet(dpid,
   packet.tostring(),openflow.OFPP_FLOOD , inport)
 File ./nox/lib/packet/packet_base.py, line 114, in
  tostring
   return ''.join((buf, self.next.tostring()))
 File ./nox/lib/packet/packet_base.py, line 114, in
  tostring
   return ''.join((buf, 

Re: [nox-dev] Type Error Question

2011-03-01 Thread James Murphy McCauley
You're not doing anything wrong here.  You seem to be doing something
wrong elsewhere.  Specifically, you seem to have constructed an MSS TCP
option with a tuple as its value, when the value should be some sort of
integer.

-- Murphy

On Tue, 2011-03-01 at 15:22 -0500, Aaron Rosen wrote:
 Hello I was wondering if someone could explain where I'm going wrong
 here: 
 I'm receiving a packet and then trying to send it back out with 
 
 self.send_openflow_packet(dpid,
 packet.tostring(),openflow.OFPP_FLOOD , inport)
 
 When I do this I'm getting the following exception: 
 
 00290|pyrt|ERR:unable to invoke a Python event handler:
 Traceback (most recent call last):
   File ./nox/lib/util.py, line 113, in f
 event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/aaronswitch.py, line 177, in
 packet_in_callback
 self.forward(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/aaronswitch.py, line 96, in forward
 self.send_openflow_packet(dpid,
 packet.tostring(),openflow.OFPP_FLOOD , inport)
   File ./nox/lib/packet/packet_base.py, line 114, in tostring
 return ''.join((buf, self.next.tostring()))
   File ./nox/lib/packet/packet_base.py, line 114, in tostring
 return ''.join((buf, self.next.tostring()))
   File ./nox/lib/packet/packet_base.py, line 109, in tostring
 buf = self.hdr()
   File ./nox/lib/packet/tcp.py, line 215, in hdr
 packet += option.to_bytes()
   File ./nox/lib/packet/tcp.py, line 70, in to_bytes
 return struct.pack('!BBH',self.type,4,self.val)
 TypeError: unsupported operand type(s) for : 'tuple' and 'long'
 
 Thanks, 
 
 Aaron
 
 
 -- 
 Aaron O. Rosen 
 Masters Student - Network Communication
 306B Fluor Daniel 
 843.425.9777
 
 ___
 nox-dev mailing list
 nox-dev@noxrepo.org
 http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org



___
nox-dev mailing list
nox-dev@noxrepo.org
http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org


Re: [nox-dev] Type Error Question

2011-03-01 Thread Aaron Rosen
Hi Murphy,

I'm just trying to connect to a computer using ssh  so when I do ssh
130.127.39.235 I see these typeerror messages. I do not to anything with the
packet when it gets to the controller except tell it to flood.

The MSS of these packets are 1460 in the packet_in event.

Any idea?

Thanks,

Aaron


On Tue, Mar 1, 2011 at 3:51 PM, James Murphy McCauley jam...@nau.eduwrote:

 You're not doing anything wrong here.  You seem to be doing something
 wrong elsewhere.  Specifically, you seem to have constructed an MSS TCP
 option with a tuple as its value, when the value should be some sort of
 integer.

 -- Murphy

 On Tue, 2011-03-01 at 15:22 -0500, Aaron Rosen wrote:
  Hello I was wondering if someone could explain where I'm going wrong
  here:
  I'm receiving a packet and then trying to send it back out with
 
  self.send_openflow_packet(dpid,
  packet.tostring(),openflow.OFPP_FLOOD , inport)
 
  When I do this I'm getting the following exception:
 
  00290|pyrt|ERR:unable to invoke a Python event handler:
  Traceback (most recent call last):
File ./nox/lib/util.py, line 113, in f
  event.total_len, buffer_id, packet)
File ./nox/coreapps/examples/aaronswitch.py, line 177, in
  packet_in_callback
  self.forward(dpid, inport, packet, packet.arr, bufid)
File ./nox/coreapps/examples/aaronswitch.py, line 96, in forward
  self.send_openflow_packet(dpid,
  packet.tostring(),openflow.OFPP_FLOOD , inport)
File ./nox/lib/packet/packet_base.py, line 114, in tostring
  return ''.join((buf, self.next.tostring()))
File ./nox/lib/packet/packet_base.py, line 114, in tostring
  return ''.join((buf, self.next.tostring()))
File ./nox/lib/packet/packet_base.py, line 109, in tostring
  buf = self.hdr()
File ./nox/lib/packet/tcp.py, line 215, in hdr
  packet += option.to_bytes()
File ./nox/lib/packet/tcp.py, line 70, in to_bytes
  return struct.pack('!BBH',self.type,4,self.val)
  TypeError: unsupported operand type(s) for : 'tuple' and 'long'
 
  Thanks,
 
  Aaron
 
 
  --
  Aaron O. Rosen
  Masters Student - Network Communication
  306B Fluor Daniel
  843.425.9777
 
  ___
  nox-dev mailing list
  nox-dev@noxrepo.org
  http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org





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


Re: [nox-dev] Type Error Question

2011-03-01 Thread James Murphy McCauley
Looks like the problem is in the parsing.  Here's a patch:

--- a/src/nox/lib/packet/tcp.py
+++ b/src/nox/lib/packet/tcp.py
@@ -150,7 +150,7 @@ class tcp(packet_base):
 elif arr[i] == tcp_opt.MSS:
 if arr[i+1] != 4:
 raise Exception() 
-val = struct.unpack('!H',arr[i+2:i+4])
+val = struct.unpack('!H',arr[i+2:i+4])[0]
 self.options.append(tcp_opt(tcp_opt.MSS,val))
 elif arr[i] == tcp_opt.WSOPT:
 if arr[i+1] != 3:

-- Murphy

On Tue, 2011-03-01 at 17:29 -0500, Aaron Rosen wrote:
 Hi Murphy, 
 
 I'm just trying to connect to a computer using ssh  so when I do ssh
 130.127.39.235 I see these typeerror messages. I do not to anything
 with the packet when it gets to the controller except tell it to
 flood. 
 
 The MSS of these packets are 1460 in the packet_in event. 
 
 Any idea? 
 
 Thanks, 
 
 Aaron
 
 
 On Tue, Mar 1, 2011 at 3:51 PM, James Murphy McCauley
 jam...@nau.edu wrote:
 You're not doing anything wrong here.  You seem to be doing
 something
 wrong elsewhere.  Specifically, you seem to have constructed
 an MSS TCP
 option with a tuple as its value, when the value should be
 some sort of
 integer.
 
 -- Murphy
 
 
 On Tue, 2011-03-01 at 15:22 -0500, Aaron Rosen wrote:
  Hello I was wondering if someone could explain where I'm
 going wrong
  here:
  I'm receiving a packet and then trying to send it back out
 with
 
  self.send_openflow_packet(dpid,
  packet.tostring(),openflow.OFPP_FLOOD , inport)
 
  When I do this I'm getting the following exception:
 
  00290|pyrt|ERR:unable to invoke a Python event handler:
  Traceback (most recent call last):
File ./nox/lib/util.py, line 113, in f
  event.total_len, buffer_id, packet)
File ./nox/coreapps/examples/aaronswitch.py, line 177,
 in
  packet_in_callback
  self.forward(dpid, inport, packet, packet.arr, bufid)
File ./nox/coreapps/examples/aaronswitch.py, line 96, in
 forward
  self.send_openflow_packet(dpid,
  packet.tostring(),openflow.OFPP_FLOOD , inport)
File ./nox/lib/packet/packet_base.py, line 114, in
 tostring
  return ''.join((buf, self.next.tostring()))
File ./nox/lib/packet/packet_base.py, line 114, in
 tostring
  return ''.join((buf, self.next.tostring()))
File ./nox/lib/packet/packet_base.py, line 109, in
 tostring
  buf = self.hdr()
File ./nox/lib/packet/tcp.py, line 215, in hdr
  packet += option.to_bytes()
File ./nox/lib/packet/tcp.py, line 70, in to_bytes
  return struct.pack('!BBH',self.type,4,self.val)
  TypeError: unsupported operand type(s) for : 'tuple' and
 'long'
 
  Thanks,
 
  Aaron
 
 
  --
  Aaron O. Rosen
  Masters Student - Network Communication
  306B Fluor Daniel
  843.425.9777
 
 
  ___
  nox-dev mailing list
  nox-dev@noxrepo.org
  http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org
 
 
 
 
 
 -- 
 Aaron O. Rosen 
 Masters Student - Network Communication
 306B Fluor Daniel 
 843.425.9777
 



___
nox-dev mailing list
nox-dev@noxrepo.org
http://noxrepo.org/mailman/listinfo/nox-dev_noxrepo.org


Re: [nox-dev] Type Error Question

2011-03-01 Thread Aaron Rosen
Oh Nox is also telling me this:

Traceback (most recent call last):
  File ./nox/lib/util.py, line 113, in f
event.total_len, buffer_id, packet)
  File ./nox/coreapps/examples/aaronswitch.py, line 182, in
packet_in_callback
self.forward(dpid, inport, packet, packet.arr, bufid)
  File ./nox/coreapps/examples/aaronswitch.py, line 67, in forward
self.send_openflow_packet(dpid, packet.tostring(),openflow.OFPP_FLOOD ,
inport)
  File ./nox/lib/packet/packet_base.py, line 114, in tostring
return ''.join((buf, self.next.tostring()))
  File ./nox/lib/packet/packet_base.py, line 114, in tostring
return ''.join((buf, self.next.tostring()))
  File ./nox/lib/packet/packet_base.py, line 109, in tostring
buf = self.hdr()
  File ./nox/lib/packet/tcp.py, line 215, in hdr
packet += option.to_bytes()
  File ./nox/lib/packet/tcp.py, line 78, in to_bytes
self.msg('(tcp_opt to_bytes) warning, unknown option')
AttributeError: tcp_opt instance has no attribute 'msg'




On Tue, Mar 1, 2011 at 6:18 PM, Aaron Rosen aro...@clemson.edu wrote:

 Thanks Murphy that fixes the typeerror but I'm still not sure if the
 packets are correct because I'm not able to make a connection. In Wireshark
 for this ssh packet_in's it's saying This frame is a suspected
 retransmission and in tcpdump at the host that is getting these packets its
 saying:


 18:13:48.227362 IP truncated-ip - 730 bytes missing! 130.127.39.173.59276 
 130.127.39.235.ssh: P 40:832(792) ack 33 win 12 nop,nop,timestamp 9797038
 46103242


 Thanks,

 Aaron



 On Tue, Mar 1, 2011 at 5:39 PM, James Murphy McCauley jam...@nau.eduwrote:

 Looks like the problem is in the parsing.  Here's a patch:

 --- a/src/nox/lib/packet/tcp.py
 +++ b/src/nox/lib/packet/tcp.py
 @@ -150,7 +150,7 @@ class tcp(packet_base):
 elif arr[i] == tcp_opt.MSS:
 if arr[i+1] != 4:
 raise Exception()
 -val = struct.unpack('!H',arr[i+2:i+4])
 +val = struct.unpack('!H',arr[i+2:i+4])[0]
 self.options.append(tcp_opt(tcp_opt.MSS,val))
 elif arr[i] == tcp_opt.WSOPT:
 if arr[i+1] != 3:

 -- Murphy

 On Tue, 2011-03-01 at 17:29 -0500, Aaron Rosen wrote:
  Hi Murphy,
 
  I'm just trying to connect to a computer using ssh  so when I do ssh
  130.127.39.235 I see these typeerror messages. I do not to anything
  with the packet when it gets to the controller except tell it to
  flood.
 
  The MSS of these packets are 1460 in the packet_in event.
 
  Any idea?
 
  Thanks,
 
  Aaron
 
 
  On Tue, Mar 1, 2011 at 3:51 PM, James Murphy McCauley
  jam...@nau.edu wrote:
  You're not doing anything wrong here.  You seem to be doing
  something
  wrong elsewhere.  Specifically, you seem to have constructed
  an MSS TCP
  option with a tuple as its value, when the value should be
  some sort of
  integer.
 
  -- Murphy
 
 
  On Tue, 2011-03-01 at 15:22 -0500, Aaron Rosen wrote:
   Hello I was wondering if someone could explain where I'm
  going wrong
   here:
   I'm receiving a packet and then trying to send it back out
  with
  
   self.send_openflow_packet(dpid,
   packet.tostring(),openflow.OFPP_FLOOD , inport)
  
   When I do this I'm getting the following exception:
  
   00290|pyrt|ERR:unable to invoke a Python event handler:
   Traceback (most recent call last):
 File ./nox/lib/util.py, line 113, in f
   event.total_len, buffer_id, packet)
 File ./nox/coreapps/examples/aaronswitch.py, line 177,
  in
   packet_in_callback
   self.forward(dpid, inport, packet, packet.arr, bufid)
 File ./nox/coreapps/examples/aaronswitch.py, line 96, in
  forward
   self.send_openflow_packet(dpid,
   packet.tostring(),openflow.OFPP_FLOOD , inport)
 File ./nox/lib/packet/packet_base.py, line 114, in
  tostring
   return ''.join((buf, self.next.tostring()))
 File ./nox/lib/packet/packet_base.py, line 114, in
  tostring
   return ''.join((buf, self.next.tostring()))
 File ./nox/lib/packet/packet_base.py, line 109, in
  tostring
   buf = self.hdr()
 File ./nox/lib/packet/tcp.py, line 215, in hdr
   packet += option.to_bytes()
 File ./nox/lib/packet/tcp.py, line 70, in to_bytes
   return struct.pack('!BBH',self.type,4,self.val)
   TypeError: unsupported operand type(s) for : 'tuple' and
  'long'
  
   Thanks,
  
   Aaron
  
  
   --
   Aaron O. Rosen
   Masters Student - Network Communication
   306B Fluor Daniel
   843.425.9777
  
 
   

Re: [nox-dev] Type Error Question

2011-03-01 Thread James Murphy McCauley
Yeah, that's a bug too.

Change line 78 in tcp.py to like...
print '(tcp_opt to_bytes) warning, unknown option type ' +
str(self.type)

.. I'd actually be interested in knowing which option it is, because
maybe we should be handling it.

You could also probably pass packet.arr instead of packet.tostring()
which would get around the fact that the parsing library has not been
extensively tested for packet assembly (mostly it's used for parsing).

-- Murphy

On Tue, 2011-03-01 at 18:21 -0500, Aaron Rosen wrote:
 Oh Nox is also telling me this: 
 
 Traceback (most recent call last):
   File ./nox/lib/util.py, line 113, in f
 event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/aaronswitch.py, line 182, in
 packet_in_callback
 self.forward(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/aaronswitch.py, line 67, in forward
 self.send_openflow_packet(dpid,
 packet.tostring(),openflow.OFPP_FLOOD , inport)
   File ./nox/lib/packet/packet_base.py, line 114, in tostring
 return ''.join((buf, self.next.tostring()))
   File ./nox/lib/packet/packet_base.py, line 114, in tostring
 return ''.join((buf, self.next.tostring()))
   File ./nox/lib/packet/packet_base.py, line 109, in tostring
 buf = self.hdr()
   File ./nox/lib/packet/tcp.py, line 215, in hdr
 packet += option.to_bytes()
   File ./nox/lib/packet/tcp.py, line 78, in to_bytes
 self.msg('(tcp_opt to_bytes) warning, unknown option')
 AttributeError: tcp_opt instance has no attribute 'msg'
 
 
 
 
 On Tue, Mar 1, 2011 at 6:18 PM, Aaron Rosen aro...@clemson.edu
 wrote:
 Thanks Murphy that fixes the typeerror but I'm still not sure
 if the packets are correct because I'm not able to make a
 connection. In Wireshark for this ssh packet_in's it's saying
 This frame is a suspected retransmission and in tcpdump at
 the host that is getting these packets its saying:
 
 
 18:13:48.227362 IP truncated-ip - 730 bytes missing!
 130.127.39.173.59276  130.127.39.235.ssh: P 40:832(792) ack
 33 win 12 nop,nop,timestamp 9797038 46103242
 
 
 Thanks, 
 
 Aaron
 
 
 
 
 On Tue, Mar 1, 2011 at 5:39 PM, James Murphy McCauley
 jam...@nau.edu wrote:
 Looks like the problem is in the parsing.  Here's a
 patch:
 
 --- a/src/nox/lib/packet/tcp.py
 +++ b/src/nox/lib/packet/tcp.py
 @@ -150,7 +150,7 @@ class tcp(packet_base):
 elif arr[i] == tcp_opt.MSS:
 if arr[i+1] != 4:
 raise Exception()
 -val = struct.unpack('!H',arr[i+2:i
 +4])
 +val = struct.unpack('!H',arr[i+2:i
 +4])[0]
 
 self.options.append(tcp_opt(tcp_opt.MSS,val))
 elif arr[i] == tcp_opt.WSOPT:
 if arr[i+1] != 3:
 
 -- Murphy
 
 
 On Tue, 2011-03-01 at 17:29 -0500, Aaron Rosen wrote:
  Hi Murphy,
 
  I'm just trying to connect to a computer using ssh
  so when I do ssh
  130.127.39.235 I see these typeerror messages. I do
 not to anything
  with the packet when it gets to the controller
 except tell it to
  flood.
 
  The MSS of these packets are 1460 in the packet_in
 event.
 
  Any idea?
 
  Thanks,
 
  Aaron
 
 
  On Tue, Mar 1, 2011 at 3:51 PM, James Murphy
 McCauley
  jam...@nau.edu wrote:
  You're not doing anything wrong here.  You
 seem to be doing
  something
  wrong elsewhere.  Specifically, you seem to
 have constructed
  an MSS TCP
  option with a tuple as its value, when the
 value should be
  some sort of
  integer.
 
  -- Murphy
 
 
  On Tue, 2011-03-01 at 15:22 -0500, Aaron
 Rosen wrote:
   Hello I was wondering if someone could
 explain where I'm
  going wrong
   here:
   I'm receiving a packet and then trying to
 send 

Re: [nox-dev] Type Error Question

2011-03-01 Thread Aaron Rosen
If I pass packet.arr that still doesn't work. I don't get an Error
message but tcpdump says:

19:16:26.829891 IP truncated-ip - 730 bytes missing!
130.127.39.173.58832  130.127.39.235.ssh: P
2569410772:2569411564(792) ack 3106665167 win 12 nop,nop,timestamp
10172901 47037426

Also adding that +str(self.type) their doesn't seem to print out the
type at that point.


00132|pyrt|ERR:unable to invoke a Python event handler:
Traceback (most recent call last):
  File ./nox/lib/util.py, line 113, in f
event.total_len, buffer_id, packet)
  File ./nox/coreapps/examples/aaronswitch.py, line 182, in packet_in_callback
self.forward(dpid, inport, packet, packet.arr, bufid)
  File ./nox/coreapps/examples/aaronswitch.py, line 67, in forward
self.send_openflow_packet(dpid,
packet.tostring(),openflow.OFPP_FLOOD , inport)
  File ./nox/lib/packet/packet_base.py, line 114, in tostring
return ''.join((buf, self.next.tostring()))
  File ./nox/lib/packet/packet_base.py, line 114, in tostring
return ''.join((buf, self.next.tostring()))
  File ./nox/lib/packet/packet_base.py, line 109, in tostring
buf = self.hdr()
  File ./nox/lib/packet/tcp.py, line 215, in hdr
packet += option.to_bytes()
  File ./nox/lib/packet/tcp.py, line 78, in to_bytes
self.msg('(tcp_opt to_bytes) warning, unknown option') + str(self.type)
AttributeError: tcp_opt instance has no attribute 'msg'



On Tue, Mar 1, 2011 at 6:48 PM, James Murphy McCauley jam...@nau.edu wrote:
 Yeah, that's a bug too.

 Change line 78 in tcp.py to like...
 print '(tcp_opt to_bytes) warning, unknown option type ' +
 str(self.type)

 .. I'd actually be interested in knowing which option it is, because
 maybe we should be handling it.

 You could also probably pass packet.arr instead of packet.tostring()
 which would get around the fact that the parsing library has not been
 extensively tested for packet assembly (mostly it's used for parsing).

 -- Murphy

 On Tue, 2011-03-01 at 18:21 -0500, Aaron Rosen wrote:
 Oh Nox is also telling me this:

 Traceback (most recent call last):
   File ./nox/lib/util.py, line 113, in f
     event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/aaronswitch.py, line 182, in
 packet_in_callback
     self.forward(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/aaronswitch.py, line 67, in forward
     self.send_openflow_packet(dpid,
 packet.tostring(),openflow.OFPP_FLOOD , inport)
   File ./nox/lib/packet/packet_base.py, line 114, in tostring
     return ''.join((buf, self.next.tostring()))
   File ./nox/lib/packet/packet_base.py, line 114, in tostring
     return ''.join((buf, self.next.tostring()))
   File ./nox/lib/packet/packet_base.py, line 109, in tostring
     buf = self.hdr()
   File ./nox/lib/packet/tcp.py, line 215, in hdr
     packet += option.to_bytes()
   File ./nox/lib/packet/tcp.py, line 78, in to_bytes
     self.msg('(tcp_opt to_bytes) warning, unknown option')
 AttributeError: tcp_opt instance has no attribute 'msg'




 On Tue, Mar 1, 2011 at 6:18 PM, Aaron Rosen aro...@clemson.edu
 wrote:
         Thanks Murphy that fixes the typeerror but I'm still not sure
         if the packets are correct because I'm not able to make a
         connection. In Wireshark for this ssh packet_in's it's saying
         This frame is a suspected retransmission and in tcpdump at
         the host that is getting these packets its saying:


         18:13:48.227362 IP truncated-ip - 730 bytes missing!
         130.127.39.173.59276  130.127.39.235.ssh: P 40:832(792) ack
         33 win 12 nop,nop,timestamp 9797038 46103242


         Thanks,

         Aaron




         On Tue, Mar 1, 2011 at 5:39 PM, James Murphy McCauley
         jam...@nau.edu wrote:
                 Looks like the problem is in the parsing.  Here's a
                 patch:

                 --- a/src/nox/lib/packet/tcp.py
                 +++ b/src/nox/lib/packet/tcp.py
                 @@ -150,7 +150,7 @@ class tcp(packet_base):
                             elif arr[i] == tcp_opt.MSS:
                                 if arr[i+1] != 4:
                                     raise Exception()
                 -                val = struct.unpack('!H',arr[i+2:i
                 +4])
                 +                val = struct.unpack('!H',arr[i+2:i
                 +4])[0]

                 self.options.append(tcp_opt(tcp_opt.MSS,val))
                             elif arr[i] == tcp_opt.WSOPT:
                                 if arr[i+1] != 3:

                 -- Murphy


                 On Tue, 2011-03-01 at 17:29 -0500, Aaron Rosen wrote:
                  Hi Murphy,
                 
                  I'm just trying to connect to a computer using ssh
                  so when I do ssh
                  130.127.39.235 I see these typeerror messages. I do
                 not to anything
                  with the packet when it gets to the controller
                 except tell it to
                  flood.

Re: [nox-dev] Type Error Question

2011-03-01 Thread James Murphy McCauley
I didn't just add the + str(self.type).  I also switched it to a print
from a call to self.msg() (which doesn't exist because the TCP option
class isn't a subclass of the main packet class).  You should do this.

BUT... now I am suspicious.  How are you getting these packets?  Are
they from non-matches, or did you install a flow with a
send-to-controller action?  In the former case, the packet is almost
surely truncated because only 128 bytes of a packet from a miss are sent
by default.  In the latter, are you sure you specified a large enough
size when installing the flow?

-- Murphy

On Tue, 2011-03-01 at 19:18 -0500, Aaron Rosen wrote:
 If I pass packet.arr that still doesn't work. I don't get an Error
 message but tcpdump says:
 
 19:16:26.829891 IP truncated-ip - 730 bytes missing!
 130.127.39.173.58832  130.127.39.235.ssh: P
 2569410772:2569411564(792) ack 3106665167 win 12 nop,nop,timestamp
 10172901 47037426
 
 Also adding that +str(self.type) their doesn't seem to print out the
 type at that point.
 
 
 00132|pyrt|ERR:unable to invoke a Python event handler:
 Traceback (most recent call last):
   File ./nox/lib/util.py, line 113, in f
 event.total_len, buffer_id, packet)
   File ./nox/coreapps/examples/aaronswitch.py, line 182, in 
 packet_in_callback
 self.forward(dpid, inport, packet, packet.arr, bufid)
   File ./nox/coreapps/examples/aaronswitch.py, line 67, in forward
 self.send_openflow_packet(dpid,
 packet.tostring(),openflow.OFPP_FLOOD , inport)
   File ./nox/lib/packet/packet_base.py, line 114, in tostring
 return ''.join((buf, self.next.tostring()))
   File ./nox/lib/packet/packet_base.py, line 114, in tostring
 return ''.join((buf, self.next.tostring()))
   File ./nox/lib/packet/packet_base.py, line 109, in tostring
 buf = self.hdr()
   File ./nox/lib/packet/tcp.py, line 215, in hdr
 packet += option.to_bytes()
   File ./nox/lib/packet/tcp.py, line 78, in to_bytes
 self.msg('(tcp_opt to_bytes) warning, unknown option') + str(self.type)
 AttributeError: tcp_opt instance has no attribute 'msg'
 
 
 
 On Tue, Mar 1, 2011 at 6:48 PM, James Murphy McCauley jam...@nau.edu 
 wrote:
  Yeah, that's a bug too.
 
  Change line 78 in tcp.py to like...
  print '(tcp_opt to_bytes) warning, unknown option type ' +
  str(self.type)
 
  .. I'd actually be interested in knowing which option it is, because
  maybe we should be handling it.
 
  You could also probably pass packet.arr instead of packet.tostring()
  which would get around the fact that the parsing library has not been
  extensively tested for packet assembly (mostly it's used for parsing).
 
  -- Murphy
 
  On Tue, 2011-03-01 at 18:21 -0500, Aaron Rosen wrote:
  Oh Nox is also telling me this:
 
  Traceback (most recent call last):
File ./nox/lib/util.py, line 113, in f
  event.total_len, buffer_id, packet)
File ./nox/coreapps/examples/aaronswitch.py, line 182, in
  packet_in_callback
  self.forward(dpid, inport, packet, packet.arr, bufid)
File ./nox/coreapps/examples/aaronswitch.py, line 67, in forward
  self.send_openflow_packet(dpid,
  packet.tostring(),openflow.OFPP_FLOOD , inport)
File ./nox/lib/packet/packet_base.py, line 114, in tostring
  return ''.join((buf, self.next.tostring()))
File ./nox/lib/packet/packet_base.py, line 114, in tostring
  return ''.join((buf, self.next.tostring()))
File ./nox/lib/packet/packet_base.py, line 109, in tostring
  buf = self.hdr()
File ./nox/lib/packet/tcp.py, line 215, in hdr
  packet += option.to_bytes()
File ./nox/lib/packet/tcp.py, line 78, in to_bytes
  self.msg('(tcp_opt to_bytes) warning, unknown option')
  AttributeError: tcp_opt instance has no attribute 'msg'
 
 
 
 
  On Tue, Mar 1, 2011 at 6:18 PM, Aaron Rosen aro...@clemson.edu
  wrote:
  Thanks Murphy that fixes the typeerror but I'm still not sure
  if the packets are correct because I'm not able to make a
  connection. In Wireshark for this ssh packet_in's it's saying
  This frame is a suspected retransmission and in tcpdump at
  the host that is getting these packets its saying:
 
 
  18:13:48.227362 IP truncated-ip - 730 bytes missing!
  130.127.39.173.59276  130.127.39.235.ssh: P 40:832(792) ack
  33 win 12 nop,nop,timestamp 9797038 46103242
 
 
  Thanks,
 
  Aaron
 
 
 
 
  On Tue, Mar 1, 2011 at 5:39 PM, James Murphy McCauley
  jam...@nau.edu wrote:
  Looks like the problem is in the parsing.  Here's a
  patch:
 
  --- a/src/nox/lib/packet/tcp.py
  +++ b/src/nox/lib/packet/tcp.py
  @@ -150,7 +150,7 @@ class tcp(packet_base):
  elif arr[i] == tcp_opt.MSS:
  if arr[i+1] != 4:
  raise Exception()
  -val = struct.unpack('!H',arr[i+2:i

Re: [nox-dev] Type Error Question

2011-03-01 Thread Aaron Rosen
These packets are from non-matches. So I guess I'm only getting 128Bytes of
the packet from this? I guess I should install a rule that sends this
packets to the controller if I want the full packet.

Thanks,

Aaron

On Tue, Mar 1, 2011 at 7:28 PM, James Murphy McCauley jam...@nau.eduwrote:

 I didn't just add the + str(self.type).  I also switched it to a print
 from a call to self.msg() (which doesn't exist because the TCP option
 class isn't a subclass of the main packet class).  You should do this.

 BUT... now I am suspicious.  How are you getting these packets?  Are
 they from non-matches, or did you install a flow with a
 send-to-controller action?  In the former case, the packet is almost
 surely truncated because only 128 bytes of a packet from a miss are sent
 by default.  In the latter, are you sure you specified a large enough
 size when installing the flow?

 -- Murphy

 On Tue, 2011-03-01 at 19:18 -0500, Aaron Rosen wrote:
  If I pass packet.arr that still doesn't work. I don't get an Error
  message but tcpdump says:
 
  19:16:26.829891 IP truncated-ip - 730 bytes missing!
  130.127.39.173.58832  130.127.39.235.ssh: P
  2569410772:2569411564(792) ack 3106665167 win 12 nop,nop,timestamp
  10172901 47037426
 
  Also adding that +str(self.type) their doesn't seem to print out the
  type at that point.
 
 
  00132|pyrt|ERR:unable to invoke a Python event handler:
  Traceback (most recent call last):
File ./nox/lib/util.py, line 113, in f
  event.total_len, buffer_id, packet)
File ./nox/coreapps/examples/aaronswitch.py, line 182, in
 packet_in_callback
  self.forward(dpid, inport, packet, packet.arr, bufid)
File ./nox/coreapps/examples/aaronswitch.py, line 67, in forward
  self.send_openflow_packet(dpid,
  packet.tostring(),openflow.OFPP_FLOOD , inport)
File ./nox/lib/packet/packet_base.py, line 114, in tostring
  return ''.join((buf, self.next.tostring()))
File ./nox/lib/packet/packet_base.py, line 114, in tostring
  return ''.join((buf, self.next.tostring()))
File ./nox/lib/packet/packet_base.py, line 109, in tostring
  buf = self.hdr()
File ./nox/lib/packet/tcp.py, line 215, in hdr
  packet += option.to_bytes()
File ./nox/lib/packet/tcp.py, line 78, in to_bytes
  self.msg('(tcp_opt to_bytes) warning, unknown option') +
 str(self.type)
  AttributeError: tcp_opt instance has no attribute 'msg'
 
 
 
  On Tue, Mar 1, 2011 at 6:48 PM, James Murphy McCauley jam...@nau.edu
 wrote:
   Yeah, that's a bug too.
  
   Change line 78 in tcp.py to like...
   print '(tcp_opt to_bytes) warning, unknown option type ' +
   str(self.type)
  
   .. I'd actually be interested in knowing which option it is, because
   maybe we should be handling it.
  
   You could also probably pass packet.arr instead of packet.tostring()
   which would get around the fact that the parsing library has not been
   extensively tested for packet assembly (mostly it's used for parsing).
  
   -- Murphy
  
   On Tue, 2011-03-01 at 18:21 -0500, Aaron Rosen wrote:
   Oh Nox is also telling me this:
  
   Traceback (most recent call last):
 File ./nox/lib/util.py, line 113, in f
   event.total_len, buffer_id, packet)
 File ./nox/coreapps/examples/aaronswitch.py, line 182, in
   packet_in_callback
   self.forward(dpid, inport, packet, packet.arr, bufid)
 File ./nox/coreapps/examples/aaronswitch.py, line 67, in forward
   self.send_openflow_packet(dpid,
   packet.tostring(),openflow.OFPP_FLOOD , inport)
 File ./nox/lib/packet/packet_base.py, line 114, in tostring
   return ''.join((buf, self.next.tostring()))
 File ./nox/lib/packet/packet_base.py, line 114, in tostring
   return ''.join((buf, self.next.tostring()))
 File ./nox/lib/packet/packet_base.py, line 109, in tostring
   buf = self.hdr()
 File ./nox/lib/packet/tcp.py, line 215, in hdr
   packet += option.to_bytes()
 File ./nox/lib/packet/tcp.py, line 78, in to_bytes
   self.msg('(tcp_opt to_bytes) warning, unknown option')
   AttributeError: tcp_opt instance has no attribute 'msg'
  
  
  
  
   On Tue, Mar 1, 2011 at 6:18 PM, Aaron Rosen aro...@clemson.edu
   wrote:
   Thanks Murphy that fixes the typeerror but I'm still not sure
   if the packets are correct because I'm not able to make a
   connection. In Wireshark for this ssh packet_in's it's saying
   This frame is a suspected retransmission and in tcpdump at
   the host that is getting these packets its saying:
  
  
   18:13:48.227362 IP truncated-ip - 730 bytes missing!
   130.127.39.173.59276  130.127.39.235.ssh: P 40:832(792) ack
   33 win 12 nop,nop,timestamp 9797038 46103242
  
  
   Thanks,
  
   Aaron
  
  
  
  
   On Tue, Mar 1, 2011 at 5:39 PM, James Murphy McCauley
   jam...@nau.edu wrote:
   Looks like the problem is in the parsing.  Here's a
   patch:
  
   

Re: [nox-dev] Type Error Question

2011-03-01 Thread James Murphy McCauley
You CAN change how much of the packet gets forwarded from a miss, but
this is done in the switch negotiation and there's no really clean way
to change it (it's a macro in one of the openflow headers).  You're
better off installing a flow.

In that case, if you're not manipulating the packets at all (it doesn't
seem like you are), you can also then generally send them back out by
buffer id, and not actually have to send the full packet both ways
to/from the controller.  Also, if you just want to spy on traffic and
not alter it, you could set an action to flood the packet as well as the
action to send it to the controller.

-- Murphy

On Tue, 2011-03-01 at 19:36 -0500, Aaron Rosen wrote:
 These packets are from non-matches. So I guess I'm only getting
 128Bytes of the packet from this? I guess I should install a rule that
 sends this packets to the controller if I want the full packet. 
 
 Thanks, 
 
 Aaron
 
 On Tue, Mar 1, 2011 at 7:28 PM, James Murphy McCauley
 jam...@nau.edu wrote:
 I didn't just add the + str(self.type).  I also switched it
 to a print
 from a call to self.msg() (which doesn't exist because the TCP
 option
 class isn't a subclass of the main packet class).  You should
 do this.
 
 BUT... now I am suspicious.  How are you getting these
 packets?  Are
 they from non-matches, or did you install a flow with a
 send-to-controller action?  In the former case, the packet is
 almost
 surely truncated because only 128 bytes of a packet from a
 miss are sent
 by default.  In the latter, are you sure you specified a large
 enough
 size when installing the flow?
 
 -- Murphy
 
 
 On Tue, 2011-03-01 at 19:18 -0500, Aaron Rosen wrote:
  If I pass packet.arr that still doesn't work. I don't get an
 Error
  message but tcpdump says:
 
  19:16:26.829891 IP truncated-ip - 730 bytes missing!
  130.127.39.173.58832  130.127.39.235.ssh: P
  2569410772:2569411564(792) ack 3106665167 win 12
 nop,nop,timestamp
  10172901 47037426
 
  Also adding that +str(self.type) their doesn't seem to print
 out the
  type at that point.
 
 
  00132|pyrt|ERR:unable to invoke a Python event handler:
  Traceback (most recent call last):
File ./nox/lib/util.py, line 113, in f
  event.total_len, buffer_id, packet)
File ./nox/coreapps/examples/aaronswitch.py, line 182,
 in packet_in_callback
  self.forward(dpid, inport, packet, packet.arr, bufid)
File ./nox/coreapps/examples/aaronswitch.py, line 67, in
 forward
  self.send_openflow_packet(dpid,
  packet.tostring(),openflow.OFPP_FLOOD , inport)
File ./nox/lib/packet/packet_base.py, line 114, in
 tostring
  return ''.join((buf, self.next.tostring()))
File ./nox/lib/packet/packet_base.py, line 114, in
 tostring
  return ''.join((buf, self.next.tostring()))
File ./nox/lib/packet/packet_base.py, line 109, in
 tostring
  buf = self.hdr()
File ./nox/lib/packet/tcp.py, line 215, in hdr
  packet += option.to_bytes()
File ./nox/lib/packet/tcp.py, line 78, in to_bytes
  self.msg('(tcp_opt to_bytes) warning, unknown option') +
 str(self.type)
  AttributeError: tcp_opt instance has no attribute 'msg'
 
 
 
  On Tue, Mar 1, 2011 at 6:48 PM, James Murphy McCauley
 jam...@nau.edu wrote:
   Yeah, that's a bug too.
  
   Change line 78 in tcp.py to like...
   print '(tcp_opt to_bytes) warning, unknown option type ' +
   str(self.type)
  
   .. I'd actually be interested in knowing which option it
 is, because
   maybe we should be handling it.
  
   You could also probably pass packet.arr instead of
 packet.tostring()
   which would get around the fact that the parsing library
 has not been
   extensively tested for packet assembly (mostly it's used
 for parsing).
  
   -- Murphy
  
   On Tue, 2011-03-01 at 18:21 -0500, Aaron Rosen wrote:
   Oh Nox is also telling me this:
  
   Traceback (most recent call last):
 File ./nox/lib/util.py, line 113, in f
   event.total_len, buffer_id, packet)
 File ./nox/coreapps/examples/aaronswitch.py, line
 182, in
   packet_in_callback
   self.forward(dpid, inport, packet, packet.arr, bufid)
 File ./nox/coreapps/examples/aaronswitch.py, line 67,
 in forward