projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ovs-vsctl: Make waiting for ovs-vswitchd to reload work again.
[openvswitch]
/
vswitchd
/
bridge.c
diff --git
a/vswitchd/bridge.c
b/vswitchd/bridge.c
index 5085703a362a2f2f8eb9a9b493459742ab994297..13e897fd5586061987b9e38b1417f9de1651c976 100644
(file)
--- a/
vswitchd/bridge.c
+++ b/
vswitchd/bridge.c
@@
-32,6
+32,7
@@
#include <sys/types.h>
#include <unistd.h>
#include "bitmap.h"
#include <sys/types.h>
#include <unistd.h>
#include "bitmap.h"
+#include "classifier.h"
#include "coverage.h"
#include "dirs.h"
#include "dpif.h"
#include "coverage.h"
#include "dirs.h"
#include "dpif.h"
@@
-273,10
+274,10
@@
void
bridge_init(const char *remote)
{
/* Create connection to database. */
bridge_init(const char *remote)
{
/* Create connection to database. */
- idl = ovsdb_idl_create(remote, &ovsrec_idl_class);
+ idl = ovsdb_idl_create(remote, &ovsrec_idl_class
, true
);
- ovsdb_idl_
set_write_only
(idl, &ovsrec_open_vswitch_col_cur_cfg);
- ovsdb_idl_
set_write_only
(idl, &ovsrec_open_vswitch_col_statistics);
+ ovsdb_idl_
omit_alert
(idl, &ovsrec_open_vswitch_col_cur_cfg);
+ ovsdb_idl_
omit_alert
(idl, &ovsrec_open_vswitch_col_statistics);
ovsdb_idl_omit(idl, &ovsrec_open_vswitch_col_external_ids);
ovsdb_idl_omit(idl, &ovsrec_bridge_col_external_ids);
ovsdb_idl_omit(idl, &ovsrec_open_vswitch_col_external_ids);
ovsdb_idl_omit(idl, &ovsrec_bridge_col_external_ids);
@@
-284,8
+285,8
@@
bridge_init(const char *remote)
ovsdb_idl_omit(idl, &ovsrec_port_col_external_ids);
ovsdb_idl_omit(idl, &ovsrec_port_col_fake_bridge);
ovsdb_idl_omit(idl, &ovsrec_port_col_external_ids);
ovsdb_idl_omit(idl, &ovsrec_port_col_fake_bridge);
- ovsdb_idl_
set_write_only
(idl, &ovsrec_interface_col_ofport);
- ovsdb_idl_
set_write_only
(idl, &ovsrec_interface_col_statistics);
+ ovsdb_idl_
omit_alert
(idl, &ovsrec_interface_col_ofport);
+ ovsdb_idl_
omit_alert
(idl, &ovsrec_interface_col_statistics);
ovsdb_idl_omit(idl, &ovsrec_interface_col_external_ids);
/* Register unixctl commands. */
ovsdb_idl_omit(idl, &ovsrec_interface_col_external_ids);
/* Register unixctl commands. */
@@
-1723,23
+1724,29
@@
bridge_reconfigure_remotes(struct bridge *br,
const struct sockaddr_in *managers,
size_t n_managers)
{
const struct sockaddr_in *managers,
size_t n_managers)
{
+ const char *disable_ib_str, *queue_id_str;
+ bool disable_in_band = false;
+ int queue_id;
+
struct ovsrec_controller **controllers;
size_t n_controllers;
bool had_primary;
struct ovsrec_controller **controllers;
size_t n_controllers;
bool had_primary;
- const char *disable_ib_str;
- bool disable_in_band = false;
struct ofproto_controller *ocs;
size_t n_ocs;
size_t i;
struct ofproto_controller *ocs;
size_t n_ocs;
size_t i;
-
/* Check if we should disable in-band control on this bridge. */
disable_ib_str = bridge_get_other_config(br->cfg, "disable-in-band");
if (disable_ib_str && !strcmp(disable_ib_str, "true")) {
disable_in_band = true;
}
/* Check if we should disable in-band control on this bridge. */
disable_ib_str = bridge_get_other_config(br->cfg, "disable-in-band");
if (disable_ib_str && !strcmp(disable_ib_str, "true")) {
disable_in_band = true;
}
+ /* Set OpenFlow queue ID for in-band control. */
+ queue_id_str = bridge_get_other_config(br->cfg, "in-band-queue");
+ queue_id = queue_id_str ? strtol(queue_id_str, NULL, 10) : -1;
+ ofproto_set_in_band_queue(br->ofproto, queue_id);
+
if (disable_in_band) {
ofproto_set_extra_in_band_remotes(br->ofproto, NULL, 0);
} else {
if (disable_in_band) {
ofproto_set_extra_in_band_remotes(br->ofproto, NULL, 0);
} else {
@@
-1792,14
+1799,14
@@
bridge_reconfigure_remotes(struct bridge *br,
if (!n_controllers
&& ofproto_get_fail_mode(br->ofproto) == OFPROTO_FAIL_STANDALONE) {
union ofp_action action;
if (!n_controllers
&& ofproto_get_fail_mode(br->ofproto) == OFPROTO_FAIL_STANDALONE) {
union ofp_action action;
- struct
flow flow
;
+ struct
cls_rule rule
;
memset(&action, 0, sizeof action);
action.type = htons(OFPAT_OUTPUT);
action.output.len = htons(sizeof action);
action.output.port = htons(OFPP_NORMAL);
memset(&action, 0, sizeof action);
action.type = htons(OFPAT_OUTPUT);
action.output.len = htons(sizeof action);
action.output.port = htons(OFPP_NORMAL);
-
memset(&flow, 0, sizeof flow
);
- ofproto_add_flow(br->ofproto, &
flow, OVSFW_ALL, 0, &action, 1, 0
);
+
cls_rule_init_catchall(&rule, 0
);
+ ofproto_add_flow(br->ofproto, &
rule, &action, 1
);
}
}
}
}