3f32d7ae0413ed2cf42cb5c8e9551aaab7a44a0e
[cascardo/ovs.git] / vswitchd / vswitch.ovsschema
1 {"name": "ovs_vswitchd_db",
2  "comment": "Configuration for one Open vSwitch daemon.",
3  "tables": {
4     "OpenVSwitch": {
5         "comment": "Configuration for an Open vSwitch daemon.",
6         "columns": {
7             "bridges": {
8                 "comment": "Set of bridges managed by the daemon.",
9                 "type": {"key": "uuid", "min": 0, "max": "unlimited"}},
10             "management_id": {
11                 "comment": "Exactly 12 hex digits that identify the daemon.",
12                 "type": "string"},
13             "controller": {
14                 "comment": "Default Controller used by bridges.",
15                 "type": {"key": "uuid", "min": 0, "max": 1}},
16             "ssl": {
17                 "comment": "SSL used globally by the daemon.",
18                 "type": {"key": "uuid", "min": 0, "max": 1}}}},
19     "Bridge": {
20         "comment": "Configuration for a bridge within an OpenVSwitch.",
21         "columns": {
22             "name": {
23                 "comment": "Bridge identifier.  Should be alphanumeric and no more than about 8 bytes long.  Must be unique among the names of ports, interfaces, and bridges on a host.",
24                 "type": "string"},
25             "datapath_id": {
26                 "comment": "OpenFlow datapath ID.  Exactly 12 hex digits.",
27                 "type": {"key": "string", "min": 0, "max": 1}},
28             "hwaddr": {
29                 "comment": "Ethernet address to use for bridge.  Exactly 12 hex digits in the form XX:XX:XX:XX:XX:XX.",
30                 "type": {"key": "string", "min": 0, "max": 1}},
31             "ports": {
32                 "comment": "Ports included in the bridge.",
33                 "type": {"key": "uuid", "min": 0, "max": "unlimited"}},
34             "mirrors": {
35                 "comment": "Port mirroring configuration.",
36                 "type": {"key": "uuid", "min": 0, "max": "unlimited"}},
37             "netflow": {
38                 "comment": "NetFlow configuration.",
39                 "type": {"key": "uuid", "min": 0, "max": "unlimited"}},
40             "controller": {
41                 "comment": "OpenFlow controller.  If unset, defaults to that specified by the parent OpenVSwitch.",
42                 "type": {"key": "uuid", "min": 0, "max": 1}}}},
43     "Port": {
44         "comment": "A port within a Bridge.  May contain a single Interface or multiple (bonded) Interfaces.",
45         "columns": {
46             "name": {
47                 "comment": "Port name.  Should be alphanumeric and no more than about 8 bytes long.    May be the same as the interface name, for non-bonded ports.  Must otherwise be unique among the names of ports, interfaces, and bridges on a host.",
48                 "type": "string"},
49             "interfaces": {
50                 "comment": "The Port's Interfaces.  If there is more than one, this is a bonded Port.",
51                 "type": {"key": "uuid", "min": 1, "max": "unlimited"}},
52             "trunks": {
53                 "comment": "The 802.1Q VLAN(s) that this port trunks.  Should be empty if this port trunks all VLAN(s) or if this is not a trunk port.",
54                 "type": {"key": "integer", "min": 0, "max": 4096}},
55             "tag": {
56                 "comment": "This port's implicitly tagged VLAN.  Should be empty if this is a trunk port.",
57                 "type": {"key": "integer", "min": 0, "max": 1}},
58             "updelay": {
59                 "comment": "For a bonded port, the number of milliseconds for which carrier must stay up on an interface before the interface is considered to be up.  Ignored for non-bonded ports.",
60                 "type": "integer"},
61             "downdelay": {
62                 "comment": "For a bonded port, the number of milliseconds for which carrier must stay down on an interface before the interface is considered to be down.  Ignored for non-bonded ports.",
63                 "type": "integer"}}},
64     "Interface": {
65         "comment": "An interface within a Port.",
66         "columns": {
67             "name": {
68                 "comment": "Interface name.  Should be alphanumeric and no more than about 8 bytes long.  May be the same as the port name, for non-bonded ports.  Must otherwise be unique among the names of ports, interfaces, and bridges on a host.",
69                 "type": "string"},
70             "internal": {
71                 "comment": "An \"internal\" port is one that is implemented in software as a logical device.",
72                 "type": "boolean"},
73             "ingress_policing_rate": {
74                 "comment": "Maximum rate for data received on this interface, in kbps.  Set to 0 to disable policing.",
75                 "type": "integer"},
76             "ingress_policing_burst": {
77                 "comment": "Maximum burst size for data received on this interface, in kb.  The default burst size if set to 0 is 10 kb.",
78                 "type": "integer"}}},
79     "Mirror": {
80         "comment": "A port mirror within a Bridge.",
81         "columns": {
82             "name": {
83                 "comment": "Arbitrary identifier for the Mirror.",
84                 "type": "string"},
85             "select_src_port": {
86                 "comment": "Ports on which arriving packets are selected for mirroring.",
87                  "type": {"key": "uuid", "min": 0, "max": "unlimited"}},
88             "select_dst_port": {
89                 "comment": "Ports on which departing packets are selected for mirroring.",
90                  "type": {"key": "uuid", "min": 0, "max": "unlimited"}},
91             "select_vlan": {
92                 "comment": "VLANs on which packets are selected for mirroring.",
93                 "type": {"key": "integer", "min": 0, "max": 4096}},
94             "output_port": {
95                 "comment": "Output port for selected packets.  Mutually exclusive with output_vlan.",
96                 "type": {"key": "uuid", "min": 0, "max": 1}},
97             "output_vlan": {
98                 "comment": "Output VLAN for selected packets.  Mutually exclusive with output_vlan.",
99                 "type": {"key": "integer", "min": 0, "max": 1}}}},
100     "Netflow": {
101         "comment": "A Netflow target.",
102         "columns": {
103             "target": {
104                 "comment": "Netflow target in the form \"IP:PORT\".",
105                 "type": "string"},
106             "engine_type": {
107                 "comment": "Engine type to use in NetFlow messages.  Defaults to datapath ID if not specified.",
108                 "type": "integer"},
109             "engine_id": {
110                 "comment": "Engine ID to use in NetFlow messages.  Defaults to datapath ID if not specified.",
111                 "type": "integer"},
112             "add_id_to_interface": {
113                 "comment": "Place least-significant 7 bits of engine ID into most significant bits of ingress and egress interface fields of NetFlow records?",
114                 "type": "boolean"}}},
115     "Controller": {
116         "comment": "An OpenFlow controller.",
117         "columns": {
118             "target": {
119                 "comment": "Connection method for controller, e.g. \"ssl:...\", \"tcp:...\".  The special string \"discover\" enables controller discovery.",
120                 "type": "string"},
121             "max_backoff": {
122                 "comment": "Maximum number of milliseconds to wait between connection attempts.  Default is implementation-specific.",
123                 "type": {"key": "integer", "min": 0, "max": 1}},
124             "inactivity_probe": {
125                 "comment": "Maximum number of milliseconds of idle time on connection to controller before sending an inactivity probe message.  Default is implementation-specific.",
126                 "type": {"key": "integer", "min": 0, "max": 1}},
127             "fail_mode": {
128                 "comment": "Either \"standalone\" or \"secure\", or empty to use the implementation's default.",
129                 "type": {"key": "string", "min": 0, "max": 1}},
130             "discovery_accept_regex": {
131                 "comment": "If \"target\" is \"discovery\", a POSIX extended regular expression against which the discovered controller location is validated.  If not specified, the default is implementation-specific.",
132                 "type": {"key": "string", "min": 0, "max": 1}},
133             "discovery_update_resolv_conf": {
134                 "comment": "If \"target\" is \"discovery\", whether to update /etc/resolv.conf when the controller is discovered.  If not specified, the default is implementation-specific.",
135                 "type": {"key": "boolean", "min": 0, "max": 1}},
136             "connection_mode": {
137                 "comment": "Either \"in-band\" or \"out-of-band\".  If not specified, the default is implementation-specific.",
138                 "type": {"key": "string", "min": 0, "max": 1}},
139             "local_ip": {
140                 "comment": "If \"target\" is not \"discovery\", the IP address to configure on the local port.",
141                 "type": {"key": "string", "min": 0, "max": 1}},
142             "local_netmask": {
143                 "comment": "If \"target\" is not \"discovery\", the IP netmask to configure on the local port.",
144                 "type": {"key": "string", "min": 0, "max": 1}},
145             "local_gateway": {
146                 "comment": "If \"target\" is not \"discovery\", the IP gateway to configure on the local port.",
147                 "type": {"key": "string", "min": 0, "max": 1}},
148             "controller_rate_limit": {
149                 "comment": "The maximum rate at which packets will be forwarded to the OpenFlow controller, in packets per second.  If not specified, the default is implementation-specific.",
150                 "type": {"key": "integer", "min": 0, "max": 1}},
151             "controller_burst_limit": {
152                 "comment": "The maximum number of unused packet credits that the bridge will allow to accumulate, in packets.  If not specified, the default is implementation-specific.",
153                 "type": {"key": "integer", "min": 0, "max": 1}}}},
154     "SSL": {
155         "comment": "SSL configuration for an OpenVSwitch.",
156         "columns": {
157             "private_key": {
158                 "comment": "Name of a PEM file containing the private key used as the switch's identity for SSL connections to the controller.",
159                 "type": "string"},
160             "certificate": {
161                 "comment": "Name of a PEM file containing a certificate, signed by the certificate authority (CA) used by the controller and manager, that certifies the switch's private key, identifying a trustworthy switch.",
162                 "type": "string"},
163             "ca_cert": {
164                 "comment": "Name of a PEM file containing the CA certificate used to verify that the switch is connected to a trustworthy controller.",
165                 "type": "string"}}}}}