X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fopenflow%2Fnicira-ext.h;h=e6f34baab1dd116d1a01b3c5f4465587629fbd81;hb=f40a9b61e2b758e60a38fc706d7d1253ef59a23d;hp=5ec009a767df6f2653f6b65222cfcc75b30c27ba;hpb=659586efcf6f9539282da9447007897907c41112;p=openvswitch diff --git a/include/openflow/nicira-ext.h b/include/openflow/nicira-ext.h index 5ec009a7..e6f34baa 100644 --- a/include/openflow/nicira-ext.h +++ b/include/openflow/nicira-ext.h @@ -49,6 +49,11 @@ enum nicira_type { /* Use the high 32 bits of the cookie field as the tunnel ID in the flow * match. */ NXT_TUN_ID_FROM_COOKIE, + + /* Controller role support. The request body is struct nx_role_request. + * The reply echos the request. */ + NXT_ROLE_REQUEST, + NXT_ROLE_REPLY }; struct nicira_header { @@ -67,6 +72,36 @@ struct nxt_tun_id_cookie { }; OFP_ASSERT(sizeof(struct nxt_tun_id_cookie) == 24); +/* Configures the "role" of the sending controller. The default role is: + * + * - Other (NX_ROLE_OTHER), which allows the controller access to all + * OpenFlow features. + * + * The other possible roles are a related pair: + * + * - Master (NX_ROLE_MASTER) is equivalent to Other, except that there may + * be at most one Master controller at a time: when a controller + * configures itself as Master, any existing Master is demoted to the + * Slave role. + * + * - Slave (NX_ROLE_SLAVE) allows the controller read-only access to + * OpenFlow features. In particular attempts to modify the flow table + * will be rejected with an OFPBRC_EPERM error. + * + * Slave controllers also do not receive asynchronous messages + * (OFPT_PACKET_IN, OFPT_FLOW_REMOVED, OFPT_PORT_STATUS). + */ +struct nx_role_request { + struct nicira_header nxh; + uint32_t role; /* One of NX_ROLE_*. */ +}; + +enum nx_role { + NX_ROLE_OTHER, /* Default role, full access. */ + NX_ROLE_MASTER, /* Full access, at most one. */ + NX_ROLE_SLAVE /* Read-only access. */ +}; + enum nx_action_subtype { NXAST_SNAT__OBSOLETE, /* No longer used. */