[ovs-dev] [PATCH] No need to restart DB / OVS on changing dscp value.
Mehak Mahajan
mmahajan at nicira.com
Fri Jun 8 19:04:14 UTC 2012
With this change there is no need to restart the DB or OVS on configuring a
different value for the manager or controller connection respectively. On
detecting a change in the dscp value on the socket, the previous socket is
closed and a new socket is created and connection is established with the new
configured dscp value.
Signed-off-by: Mehak Mahajan <mmahajan at nicira.com>
---
lib/jsonrpc.c | 3 +++
lib/rconn.c | 6 ++++++
lib/rconn.h | 1 +
ofproto/connmgr.c | 6 ++++++
vswitchd/vswitch.xml | 14 ++++++--------
5 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/lib/jsonrpc.c b/lib/jsonrpc.c
index 5c3359c..1c48722 100644
--- a/lib/jsonrpc.c
+++ b/lib/jsonrpc.c
@@ -1058,5 +1058,8 @@ void
jsonrpc_session_set_dscp(struct jsonrpc_session *s,
uint8_t dscp)
{
+ if (s->dscp != dscp) {
+ jsonrpc_session_force_reconnect(s);
+ }
s->dscp = dscp;
}
diff --git a/lib/rconn.c b/lib/rconn.c
index 2ddfc69..bc00f1e 100644
--- a/lib/rconn.c
+++ b/lib/rconn.c
@@ -226,6 +226,12 @@ rconn_set_dscp(struct rconn *rc, uint8_t dscp)
rc->dscp = dscp;
}
+uint8_t
+rconn_get_dscp(struct rconn *rc)
+{
+ return rc->dscp;
+}
+
void
rconn_set_probe_interval(struct rconn *rc, int probe_interval)
{
diff --git a/lib/rconn.h b/lib/rconn.h
index 2b1332c..ec7dfe2 100644
--- a/lib/rconn.h
+++ b/lib/rconn.h
@@ -40,6 +40,7 @@ struct rconn_packet_counter;
struct rconn *rconn_create(int inactivity_probe_interval,
int max_backoff, uint8_t dscp);
void rconn_set_dscp(struct rconn *rc, uint8_t dscp);
+uint8_t rconn_get_dscp(struct rconn *rc);
void rconn_set_max_backoff(struct rconn *, int max_backoff);
int rconn_get_max_backoff(const struct rconn *);
void rconn_set_probe_interval(struct rconn *, int inactivity_probe_interval);
diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c
index a0315b2..8cdaa1f 100644
--- a/ofproto/connmgr.c
+++ b/ofproto/connmgr.c
@@ -1114,6 +1114,12 @@ ofconn_reconfigure(struct ofconn *ofconn, const struct ofproto_controller *c)
rconn_set_probe_interval(ofconn->rconn, probe_interval);
ofconn_set_rate_limit(ofconn, c->rate_limit, c->burst_limit);
+
+ /* If dscp value changed reconnect. */
+ if (c->dscp != rconn_get_dscp(ofconn->rconn)) {
+ rconn_set_dscp(ofconn->rconn, c->dscp);
+ rconn_reconnect(ofconn->rconn);
+ }
}
/* Returns true if it makes sense for 'ofconn' to receive and process OpenFlow
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
index 32d4c59..88574fe 100644
--- a/vswitchd/vswitch.xml
+++ b/vswitchd/vswitch.xml
@@ -2756,10 +2756,9 @@
Service (QoS) on IP networks.
The DSCP value specified here is used when establishing the connection
- between the controller and the Open vSwitch. The connection must be
- reset for the new DSCP values to take effect. If no value is
- specified, a default value of 48 is chosen. Valid DSCP values must be
- in the range 0 to 63.
+ between the controller and the Open vSwitch. If no value is specified,
+ a default value of 48 is chosen. Valid DSCP values must be in the
+ range 0 to 63.
</column>
</group>
@@ -3003,10 +3002,9 @@
Service (QoS) on IP networks.
The DSCP value specified here is used when establishing the connection
- between the manager and the Open vSwitch. The connection must be
- reset for the new DSCP values to take effect. If no value is
- specified, a default value of 48 is chosen. Valid DSCP values must be
- in the range 0 to 63.
+ between the manager and the Open vSwitch. If no value is specified, a
+ default value of 48 is chosen. Valid DSCP values must be in the range
+ 0 to 63.
</column>
</group>
--
1.7.2.5
More information about the dev
mailing list