X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Fofproto.at;h=68dada9a6b4aaa454c0c48f5aaeeb21fee86d2d8;hb=097d493945869ed3c0772d5376cd5368ebab6391;hp=e2e6f1b0ff69d53d25453cc77abac922fcbef890;hpb=586ddea56b4dc74f45a6b0eec7e20f503a0d2c76;p=sliver-openvswitch.git diff --git a/tests/ofproto.at b/tests/ofproto.at index e2e6f1b0f..68dada9a6 100644 --- a/tests/ofproto.at +++ b/tests/ofproto.at @@ -144,6 +144,50 @@ OFPST_QUEUE request (OF1.2) (xid=0x2):port=10 queue=ALL OVS_VSWITCHD_STOP AT_CLEANUP +dnl This is really bare-bones. +dnl It at least checks request and reply serialization and deserialization. +AT_SETUP([ofproto - queue configuration - (OpenFlow 1.0)]) +OVS_VSWITCHD_START +ADD_OF_PORTS([br0], [1], [2]) +AT_CHECK([ovs-ofctl queue-get-config br0 1], [0], [stdout]) +AT_CHECK([STRIP_XIDS stdout], [0], [dnl +OFPT_QUEUE_GET_CONFIG_REPLY: port=1 +]) +AT_CHECK([ovs-ofctl queue-get-config br0 10], [0], + [OFPT_ERROR (xid=0x2): OFPQOFC_BAD_PORT +OFPT_QUEUE_GET_CONFIG_REQUEST (xid=0x2): port=10 +]) +OVS_VSWITCHD_STOP +AT_CLEANUP + +AT_SETUP([ofproto - queue configuration - (OpenFlow 1.2)]) +OVS_VSWITCHD_START +ADD_OF_PORTS([br0], [1], [2]) +AT_CHECK([ovs-ofctl -O OpenFlow12 queue-get-config br0 1], [0], [stdout]) +AT_CHECK([STRIP_XIDS stdout], [0], [dnl +OFPT_QUEUE_GET_CONFIG_REPLY (OF1.2): port=1 +]) +AT_CHECK([ovs-ofctl -O OpenFlow12 queue-get-config br0 10], [0], + [OFPT_ERROR (OF1.2) (xid=0x2): OFPQOFC_BAD_PORT +OFPT_QUEUE_GET_CONFIG_REQUEST (OF1.2) (xid=0x2): port=10 +]) +OVS_VSWITCHD_STOP +AT_CLEANUP + +dnl This is really bare-bones. +dnl It at least checks request and reply serialization and deserialization. +AT_SETUP([ofproto - group features]) +OVS_VSWITCHD_START +AT_CHECK([ovs-ofctl -O OpenFlow12 -vwarn dump-group-features br0], [0], [stdout]) +AT_CHECK([STRIP_XIDS stdout], [0], [dnl +OFPST_GROUP_FEATURES reply (OF1.2): + Group table: + Types: 0x0 + Capabilities: 0x0 +]) +OVS_VSWITCHD_STOP +AT_CLEANUP + AT_SETUP([ofproto - mod-port (OpenFlow 1.0)]) OVS_VSWITCHD_START for command_config_state in \ @@ -271,6 +315,21 @@ OFPST_AGGREGATE reply (OF1.1): packet_count=0 byte_count=0 flow_count=2 ]) AT_CHECK([ovs-ofctl -O OpenFlow11 del-flows br0]) AT_CHECK([ovs-ofctl -O OpenFlow11 dump-flows br0 | ofctl_strip], [0], [OFPST_FLOW reply (OF1.1): + table=1, in_port=4 actions=output:3 +]) +OVS_VSWITCHD_STOP +AT_CLEANUP + +AT_SETUP([ofproto - flow_mod negative test (OpenFlow 1.1)]) +OVS_VSWITCHD_START( + [set bridge br0 protocols=OpenFlow10,OpenFlow11,OpenFlow12,OpenFlow13]) +AT_CHECK([ovs-ofctl add-flow -O OpenFlow11 br0 table=1,action=goto_table:2]) + +# The error message here actually comes from ovs-ofctl, not from ovs-vswitchd, +# but at least it's the same code in ofpacts_check() that issues the error. +AT_CHECK([ovs-ofctl add-flow -O OpenFlow11 br0 table=1,action=goto_table:1], + [1], [], + [ovs-ofctl: actions are invalid with specified match (OFPBRC_BAD_TABLE_ID) ]) OVS_VSWITCHD_STOP AT_CLEANUP @@ -655,8 +714,9 @@ AT_CHECK([ovs-ofctl -O OpenFlow11 dump-flows br0 | ofctl_strip | sort], [0], [dn OFPST_FLOW reply (OF1.1): ]) AT_CHECK([ovs-ofctl -O OpenFlow11 del-flows br0]) -AT_CHECK([ovs-ofctl -O OpenFlow11 dump-flows br0 | ofctl_strip | sort], [0], [dnl +AT_CHECK([ovs-ofctl -O OpenFlow11 dump-flows br0 | ofctl_strip], [0], [dnl OFPST_FLOW reply (OF1.1): + cookie=0x2, table=1, in_port=2 actions=output:1 ]) OVS_VSWITCHD_STOP AT_CLEANUP @@ -732,13 +792,13 @@ AT_CLEANUP AT_SETUP([ofproto - flow table configuration (OpenFlow 1.2)]) OVS_VSWITCHD_START # Check the default configuration. -(mid="wild=0xffffffffff, max=1000000," +(mid="wild=0xfffffffff, max=1000000," tail=" lookup=0, matched=0 - match=0xffffffffff, instructions=0x00000007, config=0x00000003 + match=0xfffffffff, instructions=0x00000007, config=0x00000003 write_actions=0x00000000, apply_actions=0x00000000 - write_setfields=0x000000ffffffffff - apply_setfields=0x000000ffffffffff + write_setfields=0x0000000fffffffff + apply_setfields=0x0000000fffffffff metadata_match=0xffffffffffffffff metadata_write=0xffffffffffffffff" echo "OFPST_TABLE reply (OF1.2) (xid=0x2): 254 tables @@ -763,9 +823,9 @@ AT_CHECK( # Check that the configuration was updated. mv expout orig-expout (echo "OFPST_TABLE reply (OF1.2) (xid=0x2): 254 tables - 0: main : wild=0xffffffffff, max=1000000, active=0" + 0: main : wild=0xfffffffff, max=1000000, active=0" tail -n +3 orig-expout | head -7 - echo " 1: table1 : wild=0xffffffffff, max= 1024, active=0" + echo " 1: table1 : wild=0xfffffffff, max= 1024, active=0" tail -n +11 orig-expout) > expout AT_CHECK([ovs-ofctl -O OpenFlow12 dump-tables br0], [0], [expout]) OVS_VSWITCHD_STOP @@ -1563,14 +1623,14 @@ ovs-appctl -t ovs-ofctl ofctl/set-output-file monitor.log AT_CAPTURE_FILE([monitor.log]) # Send a packet-out with a load action to set some metadata, and forward to controller -AT_CHECK([ovs-ofctl packet-out br0 controller 'load(0xfafafafa5a5a5a5a->OXM_OF_METADATA[[0..63]]), controller' '0001020304050010203040501234']) +AT_CHECK([ovs-ofctl packet-out br0 controller 'load(0xfafafafa5a5a5a5a->OXM_OF_METADATA[[0..63]]), load(0xaa->NXM_NX_PKT_MARK[[]]), controller' '0001020304050010203040501234']) # Stop the monitor and check its output. ovs-appctl -t ovs-ofctl ofctl/barrier ovs-appctl -t ovs-ofctl exit AT_CHECK([sed 's/ (xid=0x[[0-9a-fA-F]]*)//' monitor.log], [0], [dnl -NXT_PACKET_IN: total_len=14 in_port=CONTROLLER metadata=0xfafafafa5a5a5a5a (via action) data_len=14 (unbuffered) +NXT_PACKET_IN: total_len=14 in_port=CONTROLLER metadata=0xfafafafa5a5a5a5a pkt_mark=0xaa (via action) data_len=14 (unbuffered) metadata=0,in_port=0,vlan_tci=0x0000,dl_src=00:10:20:30:40:50,dl_dst=00:01:02:03:04:05,dl_type=0x1234 OFPT_BARRIER_REPLY: ]) @@ -1878,3 +1938,37 @@ NXT_FLOW_MONITOR_RESUMED: OVS_VSWITCHD_STOP AT_CLEANUP + +AT_SETUP([ofproto - event filtering (OpenFlow 1.3)]) +AT_KEYWORDS([monitor]) +OVS_VSWITCHD_START + +# Start a monitor, use the required protocol version +ovs-ofctl -O OpenFlow13 monitor br0 --detach --no-chdir --pidfile >monitor.log 2>&1 +AT_CAPTURE_FILE([monitor.log]) + +# Send an OpenFlow13 message (04), OFPT_GET_ASYNC_REQUEST (1a), length (8), xid (0a) +ovs-appctl -t ovs-ofctl ofctl/send 041a00080000000a +ovs-appctl -t ovs-ofctl ofctl/barrier + +# Check default setting +read -r -d '' expected <<'EOF' +EOF + +AT_CHECK([ofctl_strip < monitor.log], [], [dnl +send: OFPT_GET_ASYNC_REQUEST (OF1.3): +OFPT_GET_ASYNC_REPLY (OF1.3): + master: + PACKET_IN: no_match action + PORT_STATUS: add delete modify + FLOW_REMOVED: idle hard delete + + slave: + PACKET_IN: (off) + PORT_STATUS: add delete modify + FLOW_REMOVED: (off) +OFPT_BARRIER_REPLY (OF1.3): +]) + +OVS_VSWITCHD_STOP +AT_CLEANUP