aboutsummaryrefslogtreecommitdiff
path: root/tests/ofp-errors.at
blob: e99aca9afd8fd949930afc3d6ae8123890c04e56 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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])
AT_CHECK([ovs-ofctl ofp-print 0101001400000000000100060105ccddeeff0011], [0], [dnl
OFPT_ERROR (xid=0x0): OFPBRC_BAD_LEN
OFPT_FEATURES_REQUEST (xid=0xeeff0011):
(***truncated to 8 bytes from 52445***)
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 |................|
])
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])
AT_CHECK([ovs-ofctl ofp-print 0101001400000000000300010106ccddeeff0011], [0], [dnl
OFPT_ERROR (xid=0x0): OFPFMFC_OVERLAP
OFPT_FEATURES_REPLY (xid=0xeeff0011):
(***truncated to 8 bytes from 52445***)
00000000  01 06 cc dd ee ff 00 11-                        |........        |
])
AT_CLEANUP
AT_SETUP([OFPT_ERROR with type OFPBIC_UNSUP_INST - OF1.1])
AT_KEYWORDS([ofp-print ofp-errors])
AT_CHECK([ovs-ofctl ofp-print 0201001400000000000300010206ccddeeff0011], [0], [dnl
OFPT_ERROR (OF1.1) (xid=0x0): OFPBIC_UNSUP_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

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
OpenFlow 1.0: -1,-1
OpenFlow 1.1: 3,5
OpenFlow 1.2: 3,5
OpenFlow 1.3: 3,5
])
AT_CHECK([ovs-ofctl print-error OFPBIC_BAD_EXP_TYPE], [0], [dnl
OpenFlow 1.0: -1,-1
OpenFlow 1.1: 3,5
OpenFlow 1.2: 3,6
OpenFlow 1.3: 3,6
])
AT_CLEANUP

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
00000000  01 01 00 1c 12 34 56 78-b0 c2 00 00 00 00 23 20 @&t@
00000010  00 01 02 01 01 00 00 08-12 34 56 78 @&t@
])
AT_CHECK(
  [ovs-ofctl encode-error-reply OFPRRFC_BAD_ROLE 0200000812345678], [0], [dnl
00000000  02 01 00 1c 12 34 56 78-b0 c2 00 00 00 00 23 20 @&t@
00000010  00 01 02 01 02 00 00 08-12 34 56 78 @&t@
])
AT_CHECK(
  [ovs-ofctl encode-error-reply OFPRRFC_BAD_ROLE 0300000812345678], [0], [dnl
00000000  03 01 00 14 12 34 56 78-00 0b 00 02 03 00 00 08 @&t@
00000010  12 34 56 78 @&t@
])
AT_CLEANUP

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_KEYWORDS([ofp-print ofp-errors])
AT_CHECK([ovs-ofctl ofp-print '0301001455555555 00030005 0102000811111111'], [0], [dnl
OFPT_ERROR (OF1.2) (xid=0x55555555): OFPBIC_BAD_EXPERIMENTER
OFPT_ECHO_REQUEST (xid=0x11111111): 0 bytes of payload
])
AT_KEYWORDS([ofp-print ofp-errors])
AT_CHECK([ovs-ofctl ofp-print '0301001455555555 00030006 0102000811111111'], [0], [dnl
OFPT_ERROR (OF1.2) (xid=0x55555555): OFPBIC_BAD_EXP_TYPE
OFPT_ECHO_REQUEST (xid=0x11111111): 0 bytes of payload
])
AT_CLEANUP