Ben Pfaff
a6198be5d0
Add -Wdeclaration-after-statement to CFLAGS.
...
This should help us avoid writing non-portable code.
2008-09-15 16:43:40 -07:00
Ben Pfaff
08cd0bc83c
Fix "make distcheck".
2008-09-15 16:32:12 -07:00
Ben Pfaff
480bc9dae6
Ignore some more generated files.
2008-09-15 16:32:12 -07:00
Ben Pfaff
c705304441
Fix OpenFlow extensions submodule to build again.
2008-09-15 16:05:07 -07:00
Ben Pfaff
b7d8bab74d
Merge commit 'origin/master'
...
Conflicts:
switch/datapath.c
utilities/dpctl.c
2008-09-15 15:43:44 -07:00
Ben Pfaff
f593e3ab70
Merge branch "partner", to simplify partner integration.
2008-09-15 15:31:36 -07:00
Justin Pettit
57d5205765
Add support for OFPFC_MODIFY Flow Mod command.
...
The OFPFC_MODIFY command allows the controller to modify the actions of
existing flows. When it does this, it does not reset counters or timers.
2008-09-15 15:27:04 -07:00
Justin Pettit
4f546834ac
Ignore hwtable_dummy.c symlink in kernel build directories.
2008-09-15 14:54:37 -07:00
Ben Pfaff
9c1b16772c
Implement OFPT_HELLO simple version negotiation.
2008-09-15 14:29:53 -07:00
Ben Pfaff
553dfa572d
Break passive vconns out into separate pvconn routines and data structures.
...
There really was nothing in common between the active and passive vconns.
This arrangement makes more sense.
2008-09-15 14:29:53 -07:00
Ben Pfaff
9fe9a47916
Make "struct vconn" opaque.
2008-09-15 14:29:53 -07:00
Ben Pfaff
51ab8ae072
Fix handling of port flags.
...
The "port watcher" in secchan was not keeping track of updates to port
flags by the controller, which caused some combinations of secchan
and controller to not turn on ports when the STP state otherwise should
have done so.
Thanks to Justin for reporting the problem.
2008-09-15 14:25:09 -07:00
Justin Pettit
6026cfb7ab
Fix broken stat requests over netlink.
...
A recent change (696db2) modified the way stats were being sent over the
netlink socket. Unfortunately, the responder set the transaction id to the
type, which caused the requestor to ignore the repsone.
2008-09-14 23:05:37 -07:00
Justin Pettit
5f9d831715
Keep old stats when a Flow Add replaces an existing entry.
2008-09-12 18:57:21 -07:00
Justin Pettit
b1d51f75c4
Clean up the code in the sample hardware table code.
2008-09-12 18:50:37 -07:00
Justin Pettit
6114ad11bb
Fix crash when no actions are specified.
...
Actions are allocated as a pointer to an array of actions in flows. When
flows are freed, the code was always freeing the action pointer.
Under some circumstances the pointer may not be set.
2008-09-12 18:47:29 -07:00
Ben Pfaff
c2eb869bdb
Use vconn_init() instead of explicit initialization in one last place.
...
Commit b5e16b0723 , "Respin "Make vconns keep track of their names and
include them in log messages,"" was supposed to do this everywhere, but
this instance was evidently missed.
2008-09-11 11:40:01 -07:00
Ben Pfaff
74cacf6067
Get rid of OFP_MAXLEN.
...
Statistics or vendor extensions can fill up the whole 64 kB.
2008-09-10 20:05:49 -07:00
Ben Pfaff
d0fb7347b9
Delete OFPST_SWITCH and make it available as a Nicira vendor extension.
2008-09-10 15:00:47 -07:00
Ben Pfaff
39136b0fb9
Make switches send error messages when they receive a bad request.
2008-09-10 13:22:25 -07:00
Ben Pfaff
696db2c3b6
Add vendor-specific messages and statistics to OpenFlow protocol.
2008-09-10 13:21:34 -07:00
Ben Pfaff
a70ca44e6d
Fix uninitialized data read in secchan.
...
Found by valgrind.
2008-09-10 13:21:34 -07:00
Justin Pettit
176265ed07
Use new method to describe table entries in OpenFlow wire protocol.
...
Older versions of OpenFlow pre-defined a few different types of tables and the
Features Reply message would indicate how many of those entries existed. This
was very inflexible, so now the Features Reply just indicates how many tables
there are. The controller now sends a Table Stats request to find out how
many entries are supported and the fields that can be wildcarded.
This change also removes the "buffer_mb" field from the Features Reply, since
it was not being used and seemed to be of limited value.
2008-09-10 13:03:25 -07:00
Ben Pfaff
b5e9402df5
Implement 802.1D Spanning Tree Protocol.
2008-09-09 14:15:57 -07:00
Ben Pfaff
9bf3d9301e
Zero out otherwise uninitialized padding in make_unbuffered_packet_out().
...
Found with valgrind.
2008-09-09 14:12:57 -07:00
Ben Pfaff
8f56e1fd10
Fix instructions for running ofp-pki: "new-pki" is now "init".
...
Thanks to Dan for pointing out the problem.
2008-09-09 14:12:57 -07:00
Ben Pfaff
71f13ed0b6
Send of0 packets from workqueue, to avoid recursive locking of ofN device.
...
lockdep reported the following warning, showing that dev_queue_xmit()
for of0 and for another ethernet device (eth0?) were taking locks of
the same class. It was not a problem in this particular case, because
of0 != eth0, but if a flow were to send a packet back to of0 then we
would have a deadlock.
Solution: use a workqueue to send packets to avoid recursive locking.
We will still waste a lot of CPU time if we get a packet that loops back
to of0. Solution for that still needed.
=============================================
[ INFO: possible recursive locking detected ]
2.6.26.5 #1
---------------------------------------------
memcheck/1258 is trying to acquire lock:
(_xmit_ETHER){-+..}, at: [<c025b126>] __qdisc_run+0xa0/0x18a
but task is already holding lock:
(_xmit_ETHER){-+..}, at: [<c024f3cd>] dev_queue_xmit+0x23c/0x334
other info that might help us debug this:
9 locks held by memcheck/1258:
#0 : (genl_mutex){--..}, at: [<c0262037>] genl_rcv+0x12/0x2b
#1 : (dp_mutex){--..}, at: [<c88e9a13>] dp_genl_openflow+0x58/0x91 [openflow_mo
d]
#2 : (rcu_read_lock){..--}, at: [<c024e749>] netif_receive_skb+0x9e/0x328
#3 : (rcu_read_lock){..--}, at: [<c0267f77>] ip_local_deliver_finish+0x2a/0x1d7
#4 : (slock-AF_INET/1){-+..}, at: [<c027f1b8>] tcp_v4_rcv+0x29f/0x5ef
#5 : (rcu_read_lock){..--}, at: [<c024f308>] dev_queue_xmit+0x177/0x334
#6 : (_xmit_ETHER){-+..}, at: [<c024f3cd>] dev_queue_xmit+0x23c/0x334
#7 : (rcu_read_lock){..--}, at: [<c88ea214>] dp_dev_xmit+0x0/0x6c [openflow_mod
]
#8 : (rcu_read_lock){..--}, at: [<c024f308>] dev_queue_xmit+0x177/0x334
stack backtrace:
Pid: 1258, comm: memcheck Not tainted 2.6.26.5 #1
[<c02c11cc>] ? printk+0xf/0x13
[<c01368c5>] __lock_acquire+0x8c2/0xbe4
[<c0134d35>] ? add_lock_to_list+0x64/0x8a
[<c0107a78>] ? native_sched_clock+0x82/0x94
[<c0136c3e>] lock_acquire+0x57/0x73
[<c025b126>] ? __qdisc_run+0xa0/0x18a
[<c02c3919>] _spin_lock+0x1c/0x49
[<c025b126>] ? __qdisc_run+0xa0/0x18a
[<c025b126>] __qdisc_run+0xa0/0x18a
[<c024f382>] dev_queue_xmit+0x1f1/0x334
[<c88e9cde>] xmit_skb+0x5b/0x65 [openflow_mod]
[<c88e9e60>] dp_output_port+0x178/0x1ae [openflow_mod]
[<c88eaf91>] do_output+0x2a/0x4c [openflow_mod]
[<c88eb11f>] execute_actions+0x16c/0x198 [openflow_mod]
[<c88eb622>] run_flow_through_tables+0xe9/0xf6 [openflow_mod]
[<c88eb63e>] fwd_port_input+0xf/0x3d [openflow_mod]
[<c88ea260>] dp_dev_xmit+0x4c/0x6c [openflow_mod]
[<c88ea214>] ? dp_dev_xmit+0x0/0x6c [openflow_mod]
[<c024f042>] dev_hard_start_xmit+0x20f/0x276
[<c024f3e2>] dev_queue_xmit+0x251/0x334
[<c026bfcb>] ip_finish_output+0x1ea/0x222
[<c026c081>] ip_output+0x7e/0x83
[<c026b37a>] ip_local_out+0x18/0x1b
[<c026baa2>] ip_queue_xmit+0x288/0x2c9
[<c0136a0c>] ? __lock_acquire+0xa09/0xbe4
[<c0111264>] ? kernel_map_pages+0xfc/0x113
[<c027ddad>] ? tcp_v4_send_check+0x80/0xba
[<c027a281>] tcp_transmit_skb+0x695/0x6cd
[<c016060a>] ? __kmalloc_track_caller+0xee/0x12a
[<c024aacc>] ? __alloc_skb+0x51/0xff
[<c027a43c>] tcp_send_ack+0xdf/0xe7
[<c02781e4>] tcp_rcv_state_process+0x389/0xc33
[<c027eebd>] tcp_v4_do_rcv+0x3bd/0x419
[<c027f2c7>] tcp_v4_rcv+0x3ae/0x5ef
[<c026805f>] ip_local_deliver_finish+0x112/0x1d7
[<c0268185>] ip_local_deliver+0x61/0x6a
[<c0267d14>] ip_rcv_finish+0x2a4/0x2c3
[<c0267f23>] ip_rcv+0x1f0/0x21a
[<c024e990>] netif_receive_skb+0x2e5/0x328
[<c024ea52>] process_backlog+0x7f/0xca
[<c024d867>] net_rx_action+0x72/0x127
[<c0120ea1>] __do_softirq+0x7b/0xf2
[<c0105a5d>] do_softirq+0x66/0xb3
[<c024ec69>] netif_rx_ni+0x29/0x2e
[<c88ea2cd>] dp_dev_recv+0x4d/0x6c [openflow_mod]
[<c88e9e06>] dp_output_port+0x11e/0x1ae [openflow_mod]
[<c88eaf91>] do_output+0x2a/0x4c [openflow_mod]
[<c88eb11f>] execute_actions+0x16c/0x198 [openflow_mod]
[<c88eb312>] recv_flow+0x1c7/0x2a5 [openflow_mod]
[<c88eb14b>] ? recv_flow+0x0/0x2a5 [openflow_mod]
[<c88eab37>] fwd_control_input+0x53/0x60 [openflow_mod]
[<c88e9a27>] dp_genl_openflow+0x6c/0x91 [openflow_mod]
[<c02621ce>] genl_rcv_msg+0x17e/0x198
[<c0262050>] ? genl_rcv_msg+0x0/0x198
[<c02614c6>] netlink_rcv_skb+0x30/0x76
[<c0262043>] genl_rcv+0x1e/0x2b
[<c0261053>] netlink_unicast+0x1a9/0x20f
[<c02612dc>] netlink_sendmsg+0x223/0x230
[<c0245384>] sock_sendmsg+0xca/0xe1
[<c012c501>] ? autoremove_wake_function+0x0/0x33
[<c015f6ce>] ? cache_free_debugcheck+0x2a3/0x2be
[<c0107a78>] ? native_sched_clock+0x82/0x94
[<c0134382>] ? lock_release_holdtime+0x1a/0x115
[<c01f52b7>] ? copy_from_user+0x34/0x11b
[<c024b6a5>] ? verify_iovec+0x40/0x6f
[<c02454da>] sys_sendmsg+0x13f/0x192
[<c0168d51>] ? pipe_write+0x434/0x43f
[<c0107a78>] ? native_sched_clock+0x82/0x94
[<c0107a78>] ? native_sched_clock+0x82/0x94
[<c0134382>] ? lock_release_holdtime+0x1a/0x115
[<c0107a78>] ? native_sched_clock+0x82/0x94
[<c0134382>] ? lock_release_holdtime+0x1a/0x115
[<c0246189>] sys_socketcall+0x14e/0x169
[<c0102d43>] ? restore_nocheck+0x12/0x15
[<c0102ce2>] syscall_call+0x7/0xb
=======================
2008-09-09 12:53:47 -07:00
Ben Pfaff
b5bcab1b47
Add ability to monitor both ends of secchan connections from dpctl.
2008-09-08 10:05:13 -07:00
Ben Pfaff
9e7df18a42
vconn: New function vconn_get_name().
2008-09-08 10:05:13 -07:00
Ben Pfaff
7949a13230
Re-add extensions submodule that was accidentally dropped.
2008-09-08 09:25:25 -07:00
Ben Pfaff
7fe9460749
Compatibility fixes for 2.6.18 kernel
...
Functions added in the 2.6.22 kernel in tcp.h and skbuff.h
have been added to the compatibility headers. Additionally
the data argument was dropped in 2.6.22 for the work queue
macros, requiring them to be redfined for previous kernels.
Based on changes from David Erickson.
2008-09-05 21:46:20 -07:00
Ben Pfaff
e71fcda320
Do not send in-band control traffic to the controller.
...
This commit prevents the secure channel from sending any traffic to
or from the controller up to the controller over its OpenFlow connection.
Instead, such traffic is always handled completely locally. This is
what the changes to in-band control up until now have been converging on:
each time, we have reduced the category of traffic that can be sent up
to the controller because we have found that doing so can cause a control
loop. This change goes all the way.
2008-09-05 17:09:53 -07:00
Ben Pfaff
c907aae9f1
Use make_openflow() function to simplify send_features_request().
2008-09-04 14:24:45 -07:00
Ben Pfaff
c572b9a572
Fix typo in comment.
2008-09-04 14:24:45 -07:00
Ben Pfaff
a3d01200b1
In userspace switch, don't truncate packets to 0 bytes with max_len of 0.
...
From partner.
2008-09-04 13:53:27 -07:00
Ben Pfaff
c5e61793e9
Drop unneeded inclusions of ofp-print.h.
2008-09-04 13:53:27 -07:00
Ben Pfaff
66f51290ba
Don't use designated struct member initializers in code compiled outside of Linux.
...
Needed for partner builds.
2008-09-04 13:53:27 -07:00
Ben Pfaff
95204b0bf0
Don't use designated array initializers in code compiled outside of Linux.
...
Needed for partner builds.
2008-09-04 13:53:27 -07:00
Ben Pfaff
eb0341e711
Rename utility functions to avoid partner namespace conflicts.
2008-09-04 13:53:27 -07:00
Ben Pfaff
9b13a5792f
Revert "Do not send in-band control traffic to the controller."
...
This reverts commit 123301f8b5 ,
because it broke second-hop OpenFlow switches' attempts to connect
to the controller.
Probably re-spin it later, with more testing this time.
2008-09-04 13:53:26 -07:00
Ben Pfaff
412c3875c2
Tolerate existing definitions of MIN, MAX macros.
...
Enables partner builds.
2008-09-04 13:53:26 -07:00
Ben Pfaff
4782d87313
Fix included headers.
...
Enables partner builds.
2008-09-04 13:53:26 -07:00
Ben Pfaff
2c775287e2
Rename struct queue to struct ofp_queue.
...
Fixes namespace conflict for partner development.
2008-09-04 13:53:26 -07:00
Ben Pfaff
eda1328578
Avoid pointer arithmetic on void*.
...
This is a GCC extension not supported by other compilers.
2008-09-04 13:53:26 -07:00
Ben Pfaff
ad8d3e6bdf
Add -Wpointer-arith to compiler flags.
...
This should help us to avoid doing pointer arithmetic on void * pointers,
which is a GCC extension that other compilers do not support.
2008-09-04 13:53:26 -07:00
Ben Pfaff
5549180a54
Rename struct buffer to struct ofpbuf.
...
Fixes namespace conflict for partner development.
2008-09-04 13:53:26 -07:00
Ben Pfaff
4870c3cc79
Simplify code by using rconn_send_with_limit() helper function.
2008-09-04 09:48:27 -07:00
Ben Pfaff
2137c4a80e
Initialize otherwise uninitialized variable.
...
Found by valgrind.
2008-09-04 09:47:33 -07:00
Ben Pfaff
b5e16b0723
Respin "Make vconns keep track of their names and include them in log messages."
...
This time, leave out the segfaults.
2008-09-04 09:47:05 -07:00
Justin Pettit
7d7d973d8b
Add serial number to description status message.
2008-09-03 17:51:42 -07:00