Refactor and centralize basic OpenFlow message decoding and validation.
[sliver-openvswitch.git] / tests / ofproto.at
1 AT_BANNER([ofproto])
2
3 m4_define([OFPROTO_START],
4   [OVS_RUNDIR=$PWD; export OVS_RUNDIR
5    OVS_LOGDIR=$PWD; export OVS_LOGDIR
6    trap 'kill `cat ovs-openflowd.pid`' 0
7    AT_CAPTURE_FILE([ovs-openflowd.log])
8    AT_CHECK(
9      [ovs-openflowd --detach --pidfile --enable-dummy --log-file dummy@br0 none --datapath-id=fedcba9876543210 $1],
10      [0], [ignore], [ignore])
11 ])
12
13 m4_define([OFPROTO_STOP],
14   [AT_CHECK([ovs-appctl -t ovs-openflowd exit])
15    trap '' 0])
16
17 AT_SETUP([ofproto - echo request])
18 OFPROTO_START
19 AT_CHECK([ovs-ofctl -vANY:ANY:WARN probe br0])
20 OFPROTO_STOP
21 AT_CLEANUP
22
23 AT_SETUP([ofproto - feature request, config request])
24 OFPROTO_START
25 AT_CHECK([ovs-ofctl -vANY:ANY:WARN show br0], [0], [stdout])
26 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
27 OFPT_FEATURES_REPLY: ver:0x1, dpid:fedcba9876543210
28 n_tables:2, n_buffers:256
29 features: capabilities:0x87, actions:0xfff
30  LOCAL(br0): addr:aa:55:aa:55:00:00, config: 0x1, state:0x1
31 OFPT_GET_CONFIG_REPLY: miss_send_len=0
32 ])
33 OFPROTO_STOP
34 AT_CLEANUP
35
36 AT_SETUP([ofproto - mod-port])
37 OFPROTO_START
38 for command_config_state in \
39     'up 0 0' \
40     'noflood 0x10 0' \
41     'down 0x11 0x1' \
42     'flood 0x1 0x1'
43 do
44     set $command_config_state
45     command=$[1] config=$[2] state=$[3]
46     AT_CHECK([ovs-ofctl -vANY:ANY:WARN mod-port br0 br0 $command])
47     AT_CHECK([ovs-ofctl -vANY:ANY:WARN show br0], [0], [stdout])
48     AT_CHECK_UNQUOTED([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0], [dnl
49 OFPT_FEATURES_REPLY: ver:0x1, dpid:fedcba9876543210
50 n_tables:2, n_buffers:256
51 features: capabilities:0x87, actions:0xfff
52  LOCAL(br0): addr:aa:55:aa:55:00:00, config: $config, state:$state
53 OFPT_GET_CONFIG_REPLY: miss_send_len=0
54 ])
55 done
56 OFPROTO_STOP
57 AT_CLEANUP