projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ovs.db.data: Fix bugs in Atom.is_default() and Datum.is_default().
[openvswitch]
/
lib
/
lacp.c
diff --git
a/lib/lacp.c
b/lib/lacp.c
index 87f70bf77d5de9c898c29e0e3f21fe206fad2a91..eaf01c3c909c62bae294d14c976636f7f3022239 100644
(file)
--- a/
lib/lacp.c
+++ b/
lib/lacp.c
@@
-50,10
+50,9
@@
struct lacp {
enum lacp_time lacp_time; /* Fast, Slow or Custom LACP time. */
long long int custom_time; /* LACP_TIME_CUSTOM transmission rate. */
enum lacp_time lacp_time; /* Fast, Slow or Custom LACP time. */
long long int custom_time; /* LACP_TIME_CUSTOM transmission rate. */
- bool strict; /* True if in strict mode. */
bool negotiated; /* True if LACP negotiations were successful. */
bool update; /* True if lacp_update() needs to be called. */
bool negotiated; /* True if LACP negotiations were successful. */
bool update; /* True if lacp_update() needs to be called. */
- bool
force_agg; /* Forces LACP_STATE_AGG bit on all slaves
. */
+ bool
heartbeat; /* LACP heartbeat mode
. */
};
struct slave {
};
struct slave {
@@
-183,16
+182,15
@@
lacp_configure(struct lacp *lacp, const struct lacp_settings *s)
if (!eth_addr_equals(lacp->sys_id, s->id)
|| lacp->sys_priority != s->priority
if (!eth_addr_equals(lacp->sys_id, s->id)
|| lacp->sys_priority != s->priority
- || lacp->
strict != s->stric
t) {
+ || lacp->
heartbeat != s->heartbea
t) {
memcpy(lacp->sys_id, s->id, ETH_ADDR_LEN);
lacp->sys_priority = s->priority;
memcpy(lacp->sys_id, s->id, ETH_ADDR_LEN);
lacp->sys_priority = s->priority;
- lacp->
strict = s->stric
t;
+ lacp->
heartbeat = s->heartbea
t;
lacp->update = true;
}
lacp->active = s->active;
lacp->lacp_time = s->lacp_time;
lacp->update = true;
}
lacp->active = s->active;
lacp->lacp_time = s->lacp_time;
- lacp->force_agg = s->force_agg;
lacp->custom_time = MAX(TIME_UPDATE_INTERVAL, s->custom_time);
}
lacp->custom_time = MAX(TIME_UPDATE_INTERVAL, s->custom_time);
}
@@
-349,7
+347,7
@@
lacp_slave_get_port_id(const struct lacp *lacp, const void *slave_)
bool
lacp_slave_is_current(const struct lacp *lacp, const void *slave_)
{
bool
lacp_slave_is_current(const struct lacp *lacp, const void *slave_)
{
- return slave_lookup(lacp, slave_)->status
== LACP_CURRENT
;
+ return slave_lookup(lacp, slave_)->status
!= LACP_DEFAULTED
;
}
/* This function should be called periodically to update 'lacp'. */
}
/* This function should be called periodically to update 'lacp'. */
@@
-431,6
+429,13
@@
lacp_update_attached(struct lacp *lacp)
struct lacp_info lead_pri;
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 10);
struct lacp_info lead_pri;
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 10);
+ if (lacp->heartbeat) {
+ HMAP_FOR_EACH (slave, node, &lacp->slaves) {
+ slave->attached = slave->status != LACP_DEFAULTED;
+ }
+ return;
+ }
+
lacp->update = false;
lead = NULL;
lacp->update = false;
lead = NULL;
@@
-471,10
+476,6
@@
lacp_update_attached(struct lacp *lacp)
slave->attached = false;
}
}
slave->attached = false;
}
}
- } else if (lacp->strict) {
- HMAP_FOR_EACH (slave, node, &lacp->slaves) {
- slave->attached = false;
- }
}
}
}
}
@@
-555,7
+556,7
@@
slave_get_actor(struct slave *slave, struct lacp_info *actor)
state |= LACP_STATE_EXP;
}
state |= LACP_STATE_EXP;
}
- if (lacp->
force_agg
|| hmap_count(&lacp->slaves) > 1) {
+ if (lacp->
heartbeat
|| hmap_count(&lacp->slaves) > 1) {
state |= LACP_STATE_AGG;
}
state |= LACP_STATE_AGG;
}
@@
-715,8
+716,8
@@
lacp_unixctl_show(struct unixctl_conn *conn,
ds_put_format(&ds, "lacp: %s\n", lacp->name);
ds_put_format(&ds, "\tstatus: %s", lacp->active ? "active" : "passive");
ds_put_format(&ds, "lacp: %s\n", lacp->name);
ds_put_format(&ds, "\tstatus: %s", lacp->active ? "active" : "passive");
- if (lacp->
stric
t) {
- ds_put_cstr(&ds, "
stric
t");
+ if (lacp->
heartbea
t) {
+ ds_put_cstr(&ds, "
heartbea
t");
}
if (lacp->negotiated) {
ds_put_cstr(&ds, " negotiated");
}
if (lacp->negotiated) {
ds_put_cstr(&ds, " negotiated");