Add support for multiple OpenFlow controllers on a single bridge.
[cascardo/ovs.git] / vswitchd / vswitch.ovsschema
1 {"name": "Open_vSwitch",
2  "tables": {
3    "Open_vSwitch": {
4      "columns": {
5        "bridges": {
6          "type": {"key": {"type": "uuid",
7                           "refTable": "Bridge"},
8                   "min": 0, "max": "unlimited"}},
9        "controller": {
10          "type": {"key": {"type": "uuid",
11                           "refTable": "Controller"},
12                    "min": 0, "max": "unlimited"}},
13        "managers": {
14          "type": {"key": "string", "min": 0, "max": "unlimited"}},
15        "ssl": {
16          "type": {"key": {"type": "uuid",
17                           "refTable": "SSL"},
18                   "min": 0, "max": 1}},
19        "external_ids": {
20          "type": {"key": "string", "value": "string",
21                   "min": 0, "max": "unlimited"}},
22        "next_cfg": {
23          "type": "integer"},
24        "cur_cfg": {
25          "type": "integer"}},
26      "maxRows": 1},
27    "Bridge": {
28      "columns": {
29        "name": {
30          "type": "string"},
31        "datapath_type": {
32          "type": "string"},
33        "datapath_id": {
34          "type": {"key": "string", "min": 0, "max": 1},
35          "ephemeral": true},
36        "ports": {
37          "type": {"key": {"type": "uuid",
38                           "refTable": "Port"},
39                   "min": 0, "max": "unlimited"}},
40        "mirrors": {
41          "type": {"key": {"type": "uuid",
42                           "refTable": "Mirror"},
43                   "min": 0, "max": "unlimited"}},
44        "netflow": {
45          "type": {"key": {"type": "uuid",
46                           "refTable": "NetFlow"},
47                   "min": 0, "max": 1}},
48        "sflow": {
49          "type": {"key": {"type": "uuid",
50                           "refTable": "sFlow"},
51                   "min": 0, "max": 1}},
52        "controller": {
53          "type": {"key": {"type": "uuid",
54                           "refTable": "Controller"},
55                   "min": 0, "max": "unlimited"}},
56        "other_config": {
57          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}},
58        "external_ids": {
59          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}},
60        "flood_vlans": {
61          "type": {"key": {"type": "integer",
62                           "minInteger": 0, 
63                           "maxInteger": 4095},
64                   "min": 0, "max": 4096}}}},
65    "Port": {
66      "columns": {
67        "name": {
68          "type": "string"},
69        "interfaces": {
70          "type": {"key": {"type": "uuid",
71                           "refTable": "Interface"},
72                   "min": 1, "max": "unlimited"}},
73        "trunks": {
74          "type": {"key": {"type": "integer",
75                           "minInteger": 0,
76                           "maxInteger": 4095},
77                   "min": 0, "max": 4096}},
78        "tag": {
79          "type": {"key": {"type": "integer",
80                           "minInteger": 0,
81                           "maxInteger": 4095},
82                   "min": 0, "max": 1}},
83        "mac": {
84          "type": {"key": {"type": "string"},
85                   "min": 0, "max": 1}},
86        "bond_updelay": {
87          "type": "integer"},
88        "bond_downdelay": {
89          "type": "integer"},
90        "bond_fake_iface": {
91          "type": "boolean"},
92        "fake_bridge": {
93          "type": "boolean"},
94        "other_config": {
95          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}},
96        "external_ids": {
97          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}}}},
98    "Interface": {
99      "columns": {
100        "name": {
101          "type": "string"},
102        "type": {
103          "type": "string"},
104        "options": {
105          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}},
106        "ingress_policing_rate": {
107          "type": {"key": {"type": "integer",
108                           "minInteger": 0}}},
109        "ingress_policing_burst": {
110          "type": {"key": {"type": "integer",
111                           "minInteger": 0}}},
112        "mac": {
113          "type": {"key": {"type": "string"},
114                   "min": 0, "max": 1}},
115        "external_ids": {
116          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}},
117        "ofport": {
118          "type": {"key": "integer", "min": 0, "max": 1},
119          "ephemeral": true}}},
120    "Mirror": {
121      "columns": {
122        "name": {
123          "type": "string"},
124        "select_all": {
125          "type": "boolean"
126        },
127        "select_src_port": {
128          "type": {"key": {"type": "uuid",
129                           "refTable": "Port",
130                           "refType": "weak"},
131                    "min": 0, "max": "unlimited"}},
132        "select_dst_port": {
133          "type": {"key": {"type": "uuid",
134                           "refTable": "Port",
135                           "refType": "weak"},
136                    "min": 0, "max": "unlimited"}},
137        "select_vlan": {
138          "type": {"key": {"type": "integer",
139                           "minInteger": 0,
140                           "maxInteger": 4095},
141                   "min": 0, "max": 4096}},
142        "output_port": {
143          "type": {"key": {"type": "uuid",
144                           "refTable": "Port",
145                           "refType": "weak"},
146                   "min": 0, "max": 1}},
147        "output_vlan": {
148          "type": {"key": {"type": "integer",
149                           "minInteger": 1,
150                           "maxInteger": 4095},
151                   "min": 0, "max": 1}}}},
152    "NetFlow": {
153      "columns": {
154        "targets": {
155          "type": {"key": {"type": "string"},
156                   "min": 1, "max": "unlimited"}},
157        "engine_type": {
158          "type": {"key": {"type": "integer",
159                           "minInteger": 0,
160                           "maxInteger": 255},
161                   "min": 0, "max": 1}},
162        "engine_id": {
163          "type": {"key": {"type": "integer",
164                           "minInteger": 0,
165                           "maxInteger": 255},
166                   "min": 0, "max": 1}},
167        "add_id_to_interface": {
168          "type": "boolean"},
169        "active_timeout": {
170          "type": {"key": {"type": "integer",
171                           "minInteger": -1}}}}},
172    "sFlow": {
173      "columns": {
174        "targets": {
175          "type": {"key": "string", "min": 1, "max": "unlimited"}},
176        "sampling": {
177          "type": {"key": "integer", "min": 0, "max": 1}},
178        "polling": {
179          "type": {"key": "integer", "min": 0, "max": 1}},
180        "header": {
181          "type": {"key": "integer", "min": 0, "max": 1}},
182        "agent": {
183          "type": {"key": "string", "min": 0, "max": 1}}}},
184    "Controller": {
185      "columns": {
186        "target": {
187          "type": "string"},
188        "max_backoff": {
189          "type": {"key": {"type": "integer",
190                           "minInteger": 1000},
191                   "min": 0, "max": 1}},
192        "inactivity_probe": {
193          "type": {"key": "integer", "min": 0, "max": 1}},
194        "fail_mode": {
195          "type": {"key": {"type": "string",
196                           "enum": ["set", ["standalone", "secure"]]},
197                   "min": 0, "max": 1}},
198        "discover_accept_regex": {
199          "type": {"key": "string", "min": 0, "max": 1}},
200        "discover_update_resolv_conf": {
201          "type": {"key": "boolean", "min": 0, "max": 1}},
202        "connection_mode": {
203          "type": {"key": {"type": "string",
204                   "enum": ["set", ["in-band", "out-of-band"]]},
205                   "min": 0, "max": 1}},
206        "local_ip": {
207          "type": {"key": {"type": "string"},
208                   "min": 0, "max": 1}},
209        "local_netmask": {
210          "type": {"key": {"type": "string"},
211                   "min": 0, "max": 1}},
212        "local_gateway": {
213          "type": {"key": {"type": "string"},
214                   "min": 0, "max": 1}},
215        "controller_rate_limit": {
216          "type": {"key": {"type": "integer",
217                           "minInteger": 100},
218                   "min": 0, "max": 1}},
219        "controller_burst_limit": {
220          "type": {"key": {"type": "integer", 
221                           "minInteger": 25},
222                   "min": 0, "max": 1}}}},
223    "SSL": {
224      "columns": {
225        "private_key": {
226          "type": "string"},
227        "certificate": {
228          "type": "string"},
229        "ca_cert": {
230          "type": "string"},
231        "bootstrap_ca_cert": {
232          "type": "boolean"}},
233      "maxRows": 1}}}