2012-03-26 13:46:35 -07:00
|
|
|
AT_BANNER([ofp-errors tests])
|
|
|
|
|
|
|
|
AT_SETUP([OFPT_ERROR with type OFPET_HELLO_FAILED - OF1.0])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print 010100170000000000000001657874726120646174610a], [0], [dnl
|
|
|
|
OFPT_ERROR (xid=0x0): OFPHFC_EPERM
|
|
|
|
extra data\012
|
|
|
|
])
|
|
|
|
AT_CLEANUP
|
|
|
|
|
|
|
|
AT_SETUP([OFPT_ERROR with type OFPET_HELLO_FAILED - OF1.1])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print 020100170000000000000001657874726120646174610a], [0], [dnl
|
|
|
|
OFPT_ERROR (OF1.1) (xid=0x0): OFPHFC_EPERM
|
|
|
|
extra data\012
|
|
|
|
])
|
|
|
|
AT_CLEANUP
|
|
|
|
|
|
|
|
AT_SETUP([OFPT_ERROR with type OFPET_BAD_REQUEST - OF1.0])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
2012-05-23 09:33:22 -07:00
|
|
|
AT_CHECK([ovs-ofctl ofp-print 0101001400000000000100060105ccddeeff0011], [0], [dnl
|
2012-03-26 13:46:35 -07:00
|
|
|
OFPT_ERROR (xid=0x0): OFPBRC_BAD_LEN
|
2012-05-23 09:33:22 -07:00
|
|
|
OFPT_FEATURES_REQUEST (xid=0xeeff0011):
|
2012-03-26 13:46:35 -07:00
|
|
|
(***truncated to 8 bytes from 52445***)
|
2012-05-23 09:33:22 -07:00
|
|
|
00000000 01 05 cc dd ee ff 00 11- |........ |
|
|
|
|
])
|
|
|
|
AT_CLEANUP
|
|
|
|
|
|
|
|
AT_SETUP([OFPT_ERROR prints type of truncated inner messages])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print "0101004c092529d500010006 \
|
|
|
|
01 06 00 e0 00 00 00 01 00 00 50 54 00 00 00 01 \
|
|
|
|
00 00 01 00 02 00 00 00 00 00 00 87 00 00 0f ff \
|
|
|
|
ff fe 50 54 00 00 00 01 62 72 30 00 00 00 00 00 \
|
|
|
|
00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01"], [0], [dnl
|
|
|
|
OFPT_ERROR (xid=0x92529d5): OFPBRC_BAD_LEN
|
|
|
|
OFPT_FEATURES_REPLY (xid=0x1):
|
|
|
|
(***truncated to 64 bytes from 224***)
|
|
|
|
00000000 01 06 00 e0 00 00 00 01-00 00 50 54 00 00 00 01 |..........PT....|
|
|
|
|
00000010 00 00 01 00 02 00 00 00-00 00 00 87 00 00 0f ff |................|
|
|
|
|
00000020 ff fe 50 54 00 00 00 01-62 72 30 00 00 00 00 00 |..PT....br0.....|
|
|
|
|
00000030 00 00 00 00 00 00 00 00-00 00 00 01 00 00 00 01 |................|
|
2012-03-26 13:46:35 -07:00
|
|
|
])
|
|
|
|
AT_CLEANUP
|
|
|
|
|
|
|
|
AT_SETUP([OFPT_ERROR with code OFPBMC_BAD_PREREQ - OF1.0])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print '0101001c55555555 b0c20000 0000232000010104 0102000811111111'], [0], [dnl
|
|
|
|
OFPT_ERROR (xid=0x55555555): OFPBMC_BAD_PREREQ
|
|
|
|
OFPT_ECHO_REQUEST (xid=0x11111111): 0 bytes of payload
|
|
|
|
])
|
|
|
|
AT_CLEANUP
|
|
|
|
|
|
|
|
AT_SETUP([OFPT_ERROR with code OFPBMC_BAD_PREREQ - OF1.1])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print '0201001c55555555 b0c20000 0000232000010104 0102000811111111'], [0], [dnl
|
|
|
|
OFPT_ERROR (OF1.1) (xid=0x55555555): OFPBMC_BAD_PREREQ
|
|
|
|
OFPT_ECHO_REQUEST (xid=0x11111111): 0 bytes of payload
|
|
|
|
])
|
|
|
|
AT_CLEANUP
|
|
|
|
|
|
|
|
dnl Error type 3, code 1 is OFPFMFC_OVERLAP in OF1.0
|
|
|
|
dnl and OFPBIC_UNSUP_INST in OF1.1, so check that value in both versions.
|
|
|
|
AT_SETUP([OFPT_ERROR with type OFPFMFC_OVERLAP - OF1.0])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
2012-05-23 09:33:22 -07:00
|
|
|
AT_CHECK([ovs-ofctl ofp-print 0101001400000000000300010106ccddeeff0011], [0], [dnl
|
2012-03-26 13:46:35 -07:00
|
|
|
OFPT_ERROR (xid=0x0): OFPFMFC_OVERLAP
|
2012-05-23 09:33:22 -07:00
|
|
|
OFPT_FEATURES_REPLY (xid=0xeeff0011):
|
2012-03-26 13:46:35 -07:00
|
|
|
(***truncated to 8 bytes from 52445***)
|
2012-05-23 09:33:22 -07:00
|
|
|
00000000 01 06 cc dd ee ff 00 11- |........ |
|
2012-03-26 13:46:35 -07:00
|
|
|
])
|
|
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([OFPT_ERROR with type OFPBIC_UNSUP_INST - OF1.1])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
2012-05-23 09:33:22 -07:00
|
|
|
AT_CHECK([ovs-ofctl ofp-print 0201001400000000000300010206ccddeeff0011], [0], [dnl
|
2012-03-26 13:46:35 -07:00
|
|
|
OFPT_ERROR (OF1.1) (xid=0x0): OFPBIC_UNSUP_INST
|
2012-05-23 09:33:22 -07:00
|
|
|
OFPT_FEATURES_REPLY (OF1.1) (xid=0xeeff0011):
|
2012-03-26 13:46:35 -07:00
|
|
|
(***truncated to 8 bytes from 52445***)
|
2012-05-23 09:33:22 -07:00
|
|
|
00000000 02 06 cc dd ee ff 00 11- |........ |
|
2012-03-26 13:46:35 -07:00
|
|
|
])
|
|
|
|
AT_CLEANUP
|
|
|
|
|
2014-06-02 21:36:28 +09:00
|
|
|
AT_SETUP([OFPT_ERROR with type OFPBIC_DUP_INST - OF1.4])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print 0501001400000000000300090206ccddeeff0011], [0], [dnl
|
|
|
|
OFPT_ERROR (OF1.4) (xid=0x0): OFPBIC_DUP_INST
|
|
|
|
OFPT_FEATURES_REPLY (OF1.1) (xid=0xeeff0011):
|
|
|
|
(***truncated to 8 bytes from 52445***)
|
|
|
|
00000000 02 06 cc dd ee ff 00 11- |........ |
|
|
|
|
])
|
|
|
|
AT_CLEANUP
|
|
|
|
|
2012-03-26 13:46:35 -07:00
|
|
|
dnl OF1.1 had OFPBIC_UNSUP_EXP_INST as 3,5.
|
|
|
|
dnl OF1.2 broke it into OFPBIC_BAD_EXPERIMENTER as 3,5
|
|
|
|
dnl and OFPBIC_BAD_EXT_TYPE as 3,6.
|
|
|
|
dnl Thus, for OF1.1 we translate both of the latter error codes into 3,5.
|
|
|
|
AT_SETUP([encoding OFPBIC_* experimenter errors])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
|
|
|
AT_CHECK([ovs-ofctl print-error OFPBIC_BAD_EXPERIMENTER], [0], [dnl
|
2013-06-24 13:49:40 -07:00
|
|
|
OpenFlow 1.1: vendor 0, type 3, code 5
|
|
|
|
OpenFlow 1.2: vendor 0, type 3, code 5
|
|
|
|
OpenFlow 1.3: vendor 0, type 3, code 5
|
2014-03-03 15:22:32 +02:00
|
|
|
OpenFlow 1.4: vendor 0, type 3, code 5
|
2014-05-07 13:42:24 -07:00
|
|
|
OpenFlow 1.5: vendor 0, type 3, code 5
|
2012-03-26 13:46:35 -07:00
|
|
|
])
|
|
|
|
AT_CHECK([ovs-ofctl print-error OFPBIC_BAD_EXP_TYPE], [0], [dnl
|
2013-06-24 13:49:40 -07:00
|
|
|
OpenFlow 1.1: vendor 0, type 3, code 5
|
|
|
|
OpenFlow 1.2: vendor 0, type 3, code 6
|
|
|
|
OpenFlow 1.3: vendor 0, type 3, code 6
|
2014-03-03 15:22:32 +02:00
|
|
|
OpenFlow 1.4: vendor 0, type 3, code 6
|
2014-05-07 13:42:24 -07:00
|
|
|
OpenFlow 1.5: vendor 0, type 3, code 6
|
2012-03-26 13:46:35 -07:00
|
|
|
])
|
|
|
|
AT_CLEANUP
|
|
|
|
|
2012-11-30 14:18:03 -08:00
|
|
|
dnl The "bad role" error was a Nicira extension in OpenFlow 1.0 and 1.1.
|
|
|
|
dnl It was adopted as an official error code in OpenFlow 1.2.
|
|
|
|
AT_SETUP([encoding errors extension that became official])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
|
|
|
AT_CHECK(
|
|
|
|
[ovs-ofctl encode-error-reply OFPRRFC_BAD_ROLE 0100000812345678], [0], [dnl
|
2017-09-14 17:00:38 -07:00
|
|
|
00000000 01 01 00 1c 12 34 56 78-b0 c2 00 00 00 00 23 20
|
|
|
|
00000010 00 01 02 01 01 00 00 08-12 34 56 78
|
2012-11-30 14:18:03 -08:00
|
|
|
])
|
|
|
|
AT_CHECK(
|
|
|
|
[ovs-ofctl encode-error-reply OFPRRFC_BAD_ROLE 0200000812345678], [0], [dnl
|
2017-09-14 17:00:38 -07:00
|
|
|
00000000 02 01 00 1c 12 34 56 78-b0 c2 00 00 00 00 23 20
|
|
|
|
00000010 00 01 02 01 02 00 00 08-12 34 56 78
|
2012-11-30 14:18:03 -08:00
|
|
|
])
|
|
|
|
AT_CHECK(
|
|
|
|
[ovs-ofctl encode-error-reply OFPRRFC_BAD_ROLE 0300000812345678], [0], [dnl
|
2017-09-14 17:00:38 -07:00
|
|
|
00000000 03 01 00 14 12 34 56 78-00 0b 00 02 03 00 00 08
|
|
|
|
00000010 12 34 56 78
|
2012-11-30 14:18:03 -08:00
|
|
|
])
|
|
|
|
AT_CLEANUP
|
|
|
|
|
2012-03-26 13:46:35 -07:00
|
|
|
AT_SETUP([decoding OFPBIC_* experimenter errors])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print '0201001455555555 00030005 0102000811111111'], [0], [dnl
|
|
|
|
OFPT_ERROR (OF1.1) (xid=0x55555555): OFPBIC_BAD_EXPERIMENTER
|
|
|
|
OFPT_ECHO_REQUEST (xid=0x11111111): 0 bytes of payload
|
|
|
|
])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print '0301001455555555 00030005 0102000811111111'], [0], [dnl
|
2012-06-27 17:19:52 +09:00
|
|
|
OFPT_ERROR (OF1.2) (xid=0x55555555): OFPBIC_BAD_EXPERIMENTER
|
2012-03-26 13:46:35 -07:00
|
|
|
OFPT_ECHO_REQUEST (xid=0x11111111): 0 bytes of payload
|
|
|
|
])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print '0301001455555555 00030006 0102000811111111'], [0], [dnl
|
2012-06-27 17:19:52 +09:00
|
|
|
OFPT_ERROR (OF1.2) (xid=0x55555555): OFPBIC_BAD_EXP_TYPE
|
2012-03-26 13:46:35 -07:00
|
|
|
OFPT_ECHO_REQUEST (xid=0x11111111): 0 bytes of payload
|
|
|
|
])
|
|
|
|
AT_CLEANUP
|
2013-06-24 13:49:40 -07:00
|
|
|
|
|
|
|
AT_SETUP([decoding experimenter errors])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print '0101001c55555555 b0c20000 0000232000010203 0102000811111111'], [0], [dnl
|
|
|
|
OFPT_ERROR (xid=0x55555555): NXBRC_MUST_BE_ZERO
|
|
|
|
OFPT_ECHO_REQUEST (xid=0x11111111): 0 bytes of payload
|
|
|
|
])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print '0201001c55555555 b0c20000 0000232000010203 0102000811111111'], [0], [dnl
|
|
|
|
OFPT_ERROR (OF1.1) (xid=0x55555555): NXBRC_MUST_BE_ZERO
|
|
|
|
OFPT_ECHO_REQUEST (xid=0x11111111): 0 bytes of payload
|
|
|
|
])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print '0301001855555555 ffff0004 00002320 0102000811111111'], [0], [dnl
|
|
|
|
OFPT_ERROR (OF1.2) (xid=0x55555555): NXBRC_MUST_BE_ZERO
|
|
|
|
OFPT_ECHO_REQUEST (xid=0x11111111): 0 bytes of payload
|
|
|
|
])
|
2014-08-21 10:38:15 -07:00
|
|
|
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print '0301001812345678 ffff0a28 4f4e4600 0300000812345678'], [0], [dnl
|
|
|
|
OFPT_ERROR (OF1.2) (xid=0x12345678): OFPBIC_DUP_INST
|
|
|
|
OFPT_HELLO (OF1.2) (xid=0x12345678):
|
|
|
|
version bitmap: 0x01, 0x02, 0x03
|
|
|
|
])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print '0401001812345678 ffff0a28 4f4e4600 0400000812345678'], [0], [dnl
|
|
|
|
OFPT_ERROR (OF1.3) (xid=0x12345678): OFPBIC_DUP_INST
|
|
|
|
OFPT_HELLO (OF1.3) (xid=0x12345678):
|
|
|
|
version bitmap: 0x01, 0x02, 0x03, 0x04
|
|
|
|
])
|
|
|
|
AT_CHECK([ovs-ofctl ofp-print '0501001412345678 00030009 0500000812345678'], [0], [dnl
|
|
|
|
OFPT_ERROR (OF1.4) (xid=0x12345678): OFPBIC_DUP_INST
|
|
|
|
OFPT_HELLO (OF1.4) (xid=0x12345678):
|
|
|
|
version bitmap: 0x01, 0x02, 0x03, 0x04, 0x05
|
|
|
|
])
|
2013-06-24 13:49:40 -07:00
|
|
|
AT_CLEANUP
|
|
|
|
|
|
|
|
AT_SETUP([encoding experimenter errors])
|
|
|
|
AT_KEYWORDS([ofp-print ofp-errors])
|
2014-08-21 10:38:15 -07:00
|
|
|
# Demonstrate that a Nicira extension error gets encoded correctly
|
|
|
|
# using the Nicira error extension format in OF1.0 and OF1.1, and
|
|
|
|
# correctly using the standard experimenter format in OF1.2.
|
2013-06-24 13:49:40 -07:00
|
|
|
AT_CHECK(
|
|
|
|
[ovs-ofctl encode-error-reply NXBRC_MUST_BE_ZERO 0100000812345678], [0], [dnl
|
2017-09-14 17:00:38 -07:00
|
|
|
00000000 01 01 00 1c 12 34 56 78-b0 c2 00 00 00 00 23 20
|
|
|
|
00000010 00 01 02 03 01 00 00 08-12 34 56 78
|
2013-06-24 13:49:40 -07:00
|
|
|
])
|
|
|
|
AT_CHECK(
|
|
|
|
[ovs-ofctl encode-error-reply NXBRC_MUST_BE_ZERO 0200000812345678], [0], [dnl
|
2017-09-14 17:00:38 -07:00
|
|
|
00000000 02 01 00 1c 12 34 56 78-b0 c2 00 00 00 00 23 20
|
|
|
|
00000010 00 01 02 03 02 00 00 08-12 34 56 78
|
2013-06-24 13:49:40 -07:00
|
|
|
])
|
|
|
|
AT_CHECK(
|
|
|
|
[ovs-ofctl encode-error-reply NXBRC_MUST_BE_ZERO 0300000812345678], [0], [dnl
|
2017-09-14 17:00:38 -07:00
|
|
|
00000000 03 01 00 18 12 34 56 78-ff ff 00 04 00 00 23 20
|
|
|
|
00000010 03 00 00 08 12 34 56 78
|
2013-06-24 13:49:40 -07:00
|
|
|
])
|
2014-08-21 10:38:15 -07:00
|
|
|
|
|
|
|
# Check that OFPERR_OFPBIC_DUP_INST is:
|
|
|
|
# - not encodable in OF1.0 (OF1.0 doesn't have instructions, after all).
|
|
|
|
# - encoded as a Nicira extension in OF1.1.
|
|
|
|
# - encoded as an ONF extension in OF1.2 and OF1.3.
|
|
|
|
# - encoded in the standard form in OF1.4.
|
|
|
|
AT_CHECK(
|
|
|
|
[ovs-ofctl '-vPATTERN:console:%c|%p|%m' encode-error-reply OFPBIC_DUP_INST 0100000812345678], [0], [dnl
|
2017-09-14 17:00:38 -07:00
|
|
|
00000000 01 01 00 1c 12 34 56 78-b0 c2 00 00 00 00 23 20
|
|
|
|
00000010 00 01 02 09 01 00 00 08-12 34 56 78
|
2014-08-21 10:38:15 -07:00
|
|
|
], [ofp_errors|ERR|cannot encode OFPBIC_DUP_INST for OpenFlow 1.0
|
|
|
|
])
|
|
|
|
AT_CHECK([ovs-ofctl encode-error-reply OFPBIC_DUP_INST 0200000812345678], [0],
|
2017-09-14 17:00:38 -07:00
|
|
|
[00000000 02 01 00 1c 12 34 56 78-b0 c2 00 00 00 00 23 20
|
|
|
|
00000010 00 03 01 00 02 00 00 08-12 34 56 78
|
2014-08-21 10:38:15 -07:00
|
|
|
])
|
|
|
|
AT_CHECK([ovs-ofctl encode-error-reply OFPBIC_DUP_INST 0300000812345678], [0],
|
2017-09-14 17:00:38 -07:00
|
|
|
[00000000 03 01 00 18 12 34 56 78-ff ff 0a 28 4f 4e 46 00
|
|
|
|
00000010 03 00 00 08 12 34 56 78
|
2014-08-21 10:38:15 -07:00
|
|
|
])
|
|
|
|
AT_CHECK([ovs-ofctl encode-error-reply OFPBIC_DUP_INST 0400000812345678], [0],
|
2017-09-14 17:00:38 -07:00
|
|
|
[00000000 04 01 00 18 12 34 56 78-ff ff 0a 28 4f 4e 46 00
|
|
|
|
00000010 04 00 00 08 12 34 56 78
|
2014-08-21 10:38:15 -07:00
|
|
|
])
|
|
|
|
AT_CHECK([ovs-ofctl encode-error-reply OFPBIC_DUP_INST 0500000812345678], [0],
|
2017-09-14 17:00:38 -07:00
|
|
|
[00000000 05 01 00 14 12 34 56 78-00 03 00 09 05 00 00 08
|
|
|
|
00000010 12 34 56 78
|
2014-08-21 10:38:15 -07:00
|
|
|
])
|
2013-06-24 13:49:40 -07:00
|
|
|
AT_CLEANUP
|