I’m sending a patch to make more clear the effect of the 
admin_point_to_point_mac value on the oper_point_to_point_mac value.

Does Open vSwitch detect if a port is connected to a point-to-point LAN?

Daniele

> Il giorno 15/nov/2014, alle ore 14:34, Daniele Venturino 
> <daniele.ventur...@m3s.it> ha scritto:
> 
> 
> 
> 2014-11-15 0:40 GMT+01:00 Jarno Rajahalme <jrajaha...@nicira.com 
> <mailto:jrajaha...@nicira.com>>:
> 
> On Nov 14, 2014, at 2:50 PM, Daniele Venturino <daniele.ventur...@m3s.it 
> <mailto:daniele.ventur...@m3s.it>> wrote:
> 
>> You're right, it's used only in rstp_port_set_admin_point_to_point_mac__() 
>> where it's set, if the old value change. The action on 
>> oper_point_to_point_mac it's inside that function.
>>  
> 
> Thanks! For now this can be as it is. Maybe you look into making this clearer 
> at the same time when you implement the AUTO mode?
> 
> Sure. I'll add this.
> 
> Daniele
>  
> 
>   Jarno
> 
>> Maybe it would be clearer to have a function 
>> "update_oper_point_to_point_mac__()" that updates oper_point_to_point_mac 
>> accordingly to admin_point_to_point_mac, instead of calling 
>> rstp_port_set_oper_point_to_point_mac__() in 
>> rstp_port_set_admin_point_to_point_mac__() ? Something like:
>> 
>> diff --git a/lib/rstp.c b/lib/rstp.c
>> index 46414bf..03d5b06 100644
>> --- a/lib/rstp.c
>> +++ b/lib/rstp.c
>> @@ -1212,29 +1212,22 @@ static void 
>> rstp_port_set_admin_point_to_point_mac__(struct rstp_port *port,
>>      VLOG_DBG("%s, port %u: set RSTP port admin-point-to-point-mac to %d",
>>              port->rstp->name, port->port_number, admin_p2p_mac_state);
>> -    if (port->admin_point_to_point_mac != admin_p2p_mac_state) {
>> -        if (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_FORCE_TRUE) {
>> -            port->admin_point_to_point_mac = admin_p2p_mac_state;
>> -            rstp_port_set_oper_point_to_point_mac__(port,
>> -                    RSTP_OPER_P2P_MAC_STATE_ENABLED);
>> -        } else if (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_FORCE_FALSE) {
>> -            port->admin_point_to_point_mac = admin_p2p_mac_state;
>> -            rstp_port_set_oper_point_to_point_mac__(port,
>> -                    RSTP_OPER_P2P_MAC_STATE_DISABLED);
>> -        } else if (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_AUTO) {
>> -            /* If adminPointToPointMAC is set to Auto, then the value of
>> -             * operPointToPointMAC is determined in accordance with the
>> -             * specific procedures defined for the MAC entity concerned, as
>> -             * defined in 6.5. If these procedures determine that the MAC
>> -             * entity is connected to a point-to-point LAN, then
>> -             * operPointToPointMAC is set TRUE; otherwise it is set FALSE.
>> -             * In the absence of a specific definition of how to determine
>> -             * whether the MAC is connected to a point-to-point LAN or not,
>> -             * the value of operPointToPointMAC shall be FALSE. */
>> -            port->admin_point_to_point_mac = admin_p2p_mac_state;
>> -            rstp_port_set_oper_point_to_point_mac__(port,
>> -                    RSTP_OPER_P2P_MAC_STATE_DISABLED);
>> -        }
>> +    /* If adminPointToPointMAC is set to Auto, then the value of
>> +     * operPointToPointMAC is determined in accordance with the
>> +     * specific procedures defined for the MAC entity concerned, as
>> +     * defined in 6.5. If these procedures determine that the MAC
>> +     * entity is connected to a point-to-point LAN, then
>> +     * operPointToPointMAC is set TRUE; otherwise it is set FALSE.
>> +     * In the absence of a specific definition of how to determine
>> +     * whether the MAC is connected to a point-to-point LAN or not,
>> +     * the value of operPointToPointMAC shall be FALSE. */
>> +
>> +    if (port->admin_point_to_point_mac != admin_p2p_mac_state
>> +        && (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_FORCE_TRUE
>> +            || admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_FORCE_FALSE
>> +            || admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_AUTO)) {
>> +        port->admin_point_to_point_mac = admin_p2p_mac_state;
>> +        update_oper_point_to_point_mac__(port)
>>      }
>>  }
>> 
>> where update_oper_point_to_point_mac__() sets oper_point_to_point_mac to 
>> RSTP_OPER_P2P_MAC_STATE_ENABLED if admin_point_to_point_mac is 
>> RSTP_ADMIN_P2P_MAC_FORCE_TRUE, it sets oper_point_to_point_mac to 
>> RSTP_OPER_P2P_MAC_STATE_DISABLED if admin_point_to_point_mac is 
>> RSTP_ADMIN_P2P_MAC_FORCE_FALSE and it sets oper_point_to_point_mac to 
>> RSTP_OPER_P2P_MAC_STATE_DISABLED if admin_point_to_point_mac is 
>> RSTP_ADMIN_P2P_MAC_AUTO (for now, later on it will be the correct auto 
>> procedure).
>> 
>> Regards,
>> Daniele
>> 
>> 2014-11-14 23:30 GMT+01:00 Jarno Rajahalme <jrajaha...@nicira.com 
>> <mailto:jrajaha...@nicira.com>>:
>> 
>> On Nov 14, 2014, at 11:09 AM, Daniele Venturino <daniele.ventur...@m3s.it 
>> <mailto:daniele.ventur...@m3s.it>> wrote:
>> 
>>> 
>>> 
>>> 2014-11-14 19:46 GMT+01:00 Jarno Rajahalme <jrajaha...@nicira.com 
>>> <mailto:jrajaha...@nicira.com>>:
>>> 
>>> On Nov 14, 2014, at 9:36 AM, Daniele Venturino <daniele.ventur...@m3s.it 
>>> <mailto:daniele.ventur...@m3s.it>> wrote:
>>> 
>>>> A possible commit message:
>>>> "Admin-port-state is the Administrative Bridge Port state variable defined 
>>>> in the 802.1D-2004 standard.
>>>> It can be set to include or exclude a port from the active topology by 
>>>> management (see 7.4).
>>>> 
>>> 
>>> IMO we should use the user-visible (configuration database) names in the 
>>> commit messages ('rstp-admin-p2p-mac' and 'rstp-admin-port-state’).
>>> 
>>> I think you're right about this. Let's use the visible names.
>>>  
>>> 
>>>> operPointToPointMAC and adminPointToPointMAC are a pair of parameters that 
>>>> permit inspection of, and control over, the administrative and operational 
>>>> state of the point-to-point status of the MAC entity by the MAC Relay 
>>>> Entity.
>>>> adminPointToPointMAC can be set by management and its value is reflected 
>>>> on operPointToPointMAC."
>>>> 
>>> 
>>> I still do not see ‘admin_point_to_point_mac’ being used for anything, and 
>>> I do not see operPointToPointMAC anywhere in this patch. Are these added in 
>>> the following patches? If so, we should mention that in the commit message.
>>> 
>>> admin_point_to_point_mac is not used in other places, but it's a per-bridge 
>>> variable and should be present. 
>>> operPointToPointMAC is named oper_point_to_point_mac in the code.
>>> They're already present in the rstp_port struct in lib/rstp-common.h.
>>> There's a little of misalignment between the naming in the code and the 
>>> naming in the standard I guess.
>>> 
>> 
>> I forgot about this and pushed this patch into master already.
>> 
>> However, could you show me where in the code the variable 
>> ‘admin_point_to_point_mac’ is read and then used for anything. I only see it 
>> being set (and the old value being compared against while doing so). In 
>> short, it seems to me like a write-only variable. I guess it should have 
>> some effect on ‘opera_point_to_point_mac’?
>> 
>>   Jarno
>> 
>>> 
>>>> The AUTO mode should work as reported in the 802.1D-2004 standard (6.4.3), 
>>>> by setting operPointToPointMAC to false if the described procedure is not 
>>>> available.
>>>> For now, I would only add this change:
>>>> 
>>>> diff --git a/lib/rstp.c b/lib/rstp.c
>>>> index 144f2ba..2a2a60c 100644
>>>> --- a/lib/rstp.c
>>>> +++ b/lib/rstp.c
>>>> @@ -1217,8 +1217,18 @@ static void 
>>>> rstp_port_set_admin_point_to_point_mac__(struct rstp_port *port,
>>>>              rstp_port_set_oper_point_to_point_mac__(port,
>>>>                      RSTP_OPER_P2P_MAC_STATE_DISABLED);
>>>>          } else if (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_AUTO) {
>>>> +            /* If adminPointToPointMAC is set to Auto, then the value of
>>>> +             * operPointToPointMAC is determined in accordance with the
>>>> +             * specific procedures defined for the MAC entity concerned, 
>>>> as
>>>> +             * defined in 6.5. If these procedures determine that the MAC
>>>> +             * entity is connected to a point-to-point LAN, then
>>>> +             * operPointToPointMAC is set TRUE; otherwise it is set FALSE.
>>>> +             * In the absence of a specific definition of how to determine
>>>> +             * whether the MAC is connected to a point-to-point LAN or 
>>>> not,
>>>> +             * the value of operPointToPointMAC shall be FALSE. */
>>>>              port->admin_point_to_point_mac = admin_p2p_mac_state;
>>>> -            /* FIXME add auto procedure*/
>>>> +            rstp_port_set_oper_point_to_point_mac__(port,
>>>> +                    RSTP_OPER_P2P_MAC_STATE_DISABLED);
>>>>          }
>>>>      }
>>>>  }
>>>> 
>>>> but we are going to implement this mechanism soon.
>>> 
>>> OK, I added the above.
>>> 
>>>   Jarno
>>> 
>>>> 
>>>> Here an extract from the 802.1D-2004 standard for a better explanation:
>>>> 
>>>> operPointToPointMAC: This parameter can take two values, as follows:
>>>> a) True. The MAC is connected to a point-to-point LAN; i.e., there is at 
>>>> most one other system attached to the LAN.
>>>> b) False. The MAC is connected to a non-point-to-point LAN; i.e., there 
>>>> can be more than one other system attached to the LAN.
>>>> 
>>>> adminPointToPointMAC: This parameter can take three values, as follows:
>>>> a) ForceTrue. The administrator requires the MAC to be treated as if it is 
>>>> connected to a point-to-point LAN, regardless of any indications to the 
>>>> contrary that are generated by the MAC entity.
>>>> b) ForceFalse. The administrator requires the MAC to be treated as 
>>>> connected to a non-point-to-point LAN, regardless of any indications to 
>>>> the contrary that are generated by the MAC entity.
>>>> c) Auto. The administrator requires the point-to-point status of the MAC 
>>>> to be determined in accordance with the specific MAC procedures defined in 
>>>> 6.5.
>>>> If adminPointToPointMAC is set to ForceTrue, then operPointToPointMAC 
>>>> shall be set True. If adminPointToPointMAC is set to ForceFalse, then 
>>>> operPointToPointMAC shall be set False.
>>>> If adminPointToPointMAC is set to Auto, then the value of 
>>>> operPointToPointMAC is determined in accordance with the specific 
>>>> procedures defined for the MAC entity concerned, as defined in 6.5. If 
>>>> these procedures determine that the MAC entity is connected to a 
>>>> point-to-point LAN, then
>>>> operPointToPointMAC is set TRUE; otherwise it is set FALSE. In the absence 
>>>> of a specific definition of how to determine whether the MAC is connected 
>>>> to a point-to-point LAN or not, the value of
>>>> operPointToPointMAC shall be FALSE.
>>>> 
>>>> Regards,
>>>> Daniele
>>>> 
>>>> 2014-11-14 0:07 GMT+01:00 Jarno Rajahalme <jrajaha...@nicira.com 
>>>> <mailto:jrajaha...@nicira.com>>:
>>>> This patch needs a proper commit message. The user visible changes are in 
>>>> the corresponding configuration settings. Maybe briefly introduce them in 
>>>> the commit message?
>>>> 
>>>> More comments inline below.
>>>> 
>>>> I have a working copy with the white-space changes, so if you provide the 
>>>> commit message and the answer to the AUTO question below, I can accept and 
>>>> push this patch.
>>>> 
>>>> Thanks!
>>>> 
>>>>   Jarno
>>>> 
>>>> On Nov 6, 2014, at 7:31 AM, Daniele Venturino <daniele.ventur...@m3s.it 
>>>> <mailto:daniele.ventur...@m3s.it>> wrote:
>>>> 
>>>> > Signed-off-by: Daniele Venturino <daniele.ventur...@m3s.it 
>>>> > <mailto:daniele.ventur...@m3s.it>>
>>>> > ---
>>>> > lib/rstp-common.h        |  6 ------
>>>> > lib/rstp.c               | 31 ++++++++++++++++++++++++++++++-
>>>> > lib/rstp.h               |  9 ++++++++-
>>>> > ofproto/ofproto-dpif.c   |  4 +++-
>>>> > ofproto/ofproto.h        |  2 ++
>>>> > utilities/ovs-vsctl.8.in <http://ovs-vsctl.8.in/> |  9 +++++++++
>>>> > vswitchd/bridge.c        | 10 ++++++++++
>>>> > 7 files changed, 62 insertions(+), 9 deletions(-)
>>>> >
>>>> > diff --git a/lib/rstp-common.h b/lib/rstp-common.h
>>>> > index 587f88c..cd43079 100644
>>>> > --- a/lib/rstp-common.h
>>>> > +++ b/lib/rstp-common.h
>>>> > @@ -240,12 +240,6 @@ struct rstp_bpdu {
>>>> >     uint8_t padding[7];
>>>> > });
>>>> >
>>>> > -enum rstp_admin_point_to_point_mac_state {
>>>> > -    RSTP_ADMIN_P2P_MAC_FORCE_TRUE,
>>>> > -    RSTP_ADMIN_P2P_MAC_FORCE_FALSE,
>>>> > -    RSTP_ADMIN_P2P_MAC_FORCE_AUTO
>>>> > -};
>>>> > -
>>>> > enum rstp_info_is {
>>>> >     INFO_IS_DISABLED,
>>>> >     INFO_IS_RECEIVED,
>>>> > diff --git a/lib/rstp.c b/lib/rstp.c
>>>> > index 0f96749..e3007e2 100644
>>>> > --- a/lib/rstp.c
>>>> > +++ b/lib/rstp.c
>>>> > @@ -110,6 +110,9 @@ static void rstp_port_set_admin_edge__(struct 
>>>> > rstp_port *, bool admin_edge)
>>>> >     OVS_REQUIRES(rstp_mutex);
>>>> > static void rstp_port_set_auto_edge__(struct rstp_port *, bool auto_edge)
>>>> >     OVS_REQUIRES(rstp_mutex);
>>>> > +static void rstp_port_set_admin_point_to_point_mac__(struct rstp_port *,
>>>> > +        enum rstp_admin_point_to_point_mac_state admin_p2p_mac_state)
>>>> > +    OVS_REQUIRES(rstp_mutex);
>>>> > static void rstp_port_set_mcheck__(struct rstp_port *, bool mcheck)
>>>> >     OVS_REQUIRES(rstp_mutex);
>>>> > static void reinitialize_port__(struct rstp_port *p)
>>>> > @@ -922,6 +925,8 @@ rstp_port_set_administrative_bridge_port__(struct 
>>>> > rstp_port *p,
>>>> >                                            uint8_t admin_port_state)
>>>> >     OVS_REQUIRES(rstp_mutex)
>>>> > {
>>>> > +    VLOG_DBG("%s, port %u: set RSTP port admin-port-state to %d",
>>>> > +             p->rstp->name, p->port_number, admin_port_state);
>>>> 
>>>> Add an empty line here.
>>>> 
>>>> >     if (admin_port_state == RSTP_ADMIN_BRIDGE_PORT_STATE_DISABLED
>>>> >         || admin_port_state == RSTP_ADMIN_BRIDGE_PORT_STATE_ENABLED) {
>>>> >
>>>> > @@ -1120,6 +1125,27 @@ rstp_port_set_auto_edge__(struct rstp_port *port, 
>>>> > bool auto_edge)
>>>> >     }
>>>> > }
>>>> >
>>>> > +/* Sets the port admin_point_to_point_mac parameter. */
>>>> > +static void rstp_port_set_admin_point_to_point_mac__(struct rstp_port 
>>>> > *port,
>>>> > +        enum rstp_admin_point_to_point_mac_state admin_p2p_mac_state)
>>>> > +    OVS_REQUIRES(rstp_mutex)
>>>> > +{
>>>> > +    VLOG_DBG("%s, port %u: set RSTP port admin-point-to-point-mac to 
>>>> > %d",
>>>> > +            port->rstp->name, port->port_number, admin_p2p_mac_state);
>>>> 
>>>> Add an empty line here.
>>>> 
>>>> > +    if (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_FORCE_TRUE) {
>>>> > +        port->admin_point_to_point_mac =  admin_p2p_mac_state;
>>>> 
>>>> Remove extra space after ‘=‘.
>>>> 
>>>> > +        rstp_port_set_oper_point_to_point_mac__(port,
>>>> > +                RSTP_OPER_P2P_MAC_STATE_ENABLED);
>>>> > +    } else if (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_FORCE_FALSE) {
>>>> > +        port->admin_point_to_point_mac =  admin_p2p_mac_state;
>>>> 
>>>> Remove extra space after ‘=‘.
>>>> 
>>>> > +        rstp_port_set_oper_point_to_point_mac__(port,
>>>> > +                RSTP_OPER_P2P_MAC_STATE_DISABLED);
>>>> > +    } else if (admin_p2p_mac_state == RSTP_ADMIN_P2P_MAC_AUTO) {
>>>> > +        port->admin_point_to_point_mac = admin_p2p_mac_state;
>>>> > +        /* FIXME fix auto behaviour */
>>>> 
>>>> Elaborate on this. How the AUTO mode should work? Why not implement it now?
>>>> 
>>>> > +    }
>>>> > +}
>>>> > +
>>>> > /* Sets the port mcheck parameter.
>>>> >  * [17.19.13] May be set by management to force the Port Protocol 
>>>> > Migration
>>>> >  * state machine to transmit RST BPDUs for a MigrateTime (17.13.9) 
>>>> > period, to
>>>> > @@ -1289,7 +1315,8 @@ rstp_port_get_status(const struct rstp_port *p, 
>>>> > uint16_t *id,
>>>> > void
>>>> > rstp_port_set(struct rstp_port *port, uint16_t port_num, int priority,
>>>> >               uint32_t path_cost, bool is_admin_edge, bool is_auto_edge,
>>>> > -              bool do_mcheck, void *aux)
>>>> > +              enum rstp_admin_point_to_point_mac_state 
>>>> > admin_p2p_mac_state,
>>>> > +              bool admin_port_state, bool do_mcheck, void *aux)
>>>> >     OVS_EXCLUDED(rstp_mutex)
>>>> > {
>>>> >     ovs_mutex_lock(&rstp_mutex);
>>>> > @@ -1299,6 +1326,8 @@ rstp_port_set(struct rstp_port *port, uint16_t 
>>>> > port_num, int priority,
>>>> >     rstp_port_set_path_cost__(port, path_cost);
>>>> >     rstp_port_set_admin_edge__(port, is_admin_edge);
>>>> >     rstp_port_set_auto_edge__(port, is_auto_edge);
>>>> > +    rstp_port_set_admin_point_to_point_mac__(port, admin_p2p_mac_state);
>>>> > +    rstp_port_set_administrative_bridge_port__(port, admin_port_state);
>>>> >     rstp_port_set_mcheck__(port, do_mcheck);
>>>> >     ovs_mutex_unlock(&rstp_mutex);
>>>> > }
>>>> > diff --git a/lib/rstp.h b/lib/rstp.h
>>>> > index ccf8292..458aecf 100644
>>>> > --- a/lib/rstp.h
>>>> > +++ b/lib/rstp.h
>>>> > @@ -120,6 +120,12 @@ enum rstp_port_role {
>>>> >     ROLE_DISABLED
>>>> > };
>>>> >
>>>> > +enum rstp_admin_point_to_point_mac_state {
>>>> > +    RSTP_ADMIN_P2P_MAC_FORCE_FALSE,
>>>> > +    RSTP_ADMIN_P2P_MAC_FORCE_TRUE,
>>>> > +    RSTP_ADMIN_P2P_MAC_AUTO
>>>> > +};
>>>> > +
>>>> > struct rstp;
>>>> > struct rstp_port;
>>>> > struct ofproto_rstp_settings;
>>>> > @@ -211,7 +217,8 @@ uint32_t rstp_convert_speed_to_cost(unsigned int 
>>>> > speed);
>>>> >
>>>> > void rstp_port_set(struct rstp_port *, uint16_t port_num, int priority,
>>>> >                    uint32_t path_cost, bool is_admin_edge, bool 
>>>> > is_auto_edge,
>>>> > -                   bool do_mcheck, void *aux)
>>>> > +                   enum rstp_admin_point_to_point_mac_state 
>>>> > admin_p2p_mac_state,
>>>> > +                   bool admin_port_state, bool do_mcheck, void *aux)
>>>> >     OVS_EXCLUDED(rstp_mutex);
>>>> >
>>>> > enum rstp_state rstp_port_get_state(const struct rstp_port *)
>>>> > diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
>>>> > index 2302073..95298f2 100644
>>>> > --- a/ofproto/ofproto-dpif.c
>>>> > +++ b/ofproto/ofproto-dpif.c
>>>> > @@ -2402,7 +2402,9 @@ set_rstp_port(struct ofport *ofport_,
>>>> >     }
>>>> >
>>>> >     rstp_port_set(rp, s->port_num, s->priority, s->path_cost,
>>>> > -                  s->admin_edge_port, s->auto_edge, s->mcheck, ofport);
>>>> > +                  s->admin_edge_port, s->auto_edge,
>>>> > +                  s->admin_p2p_mac_state, s->admin_port_state, 
>>>> > s->mcheck,
>>>> > +                  ofport);
>>>> >     update_rstp_port_state(ofport);
>>>> >     /* Synchronize operational status. */
>>>> >     rstp_port_set_mac_operational(rp, ofport->may_enable);
>>>> > diff --git a/ofproto/ofproto.h b/ofproto/ofproto.h
>>>> > index 989747d..bb28376 100644
>>>> > --- a/ofproto/ofproto.h
>>>> > +++ b/ofproto/ofproto.h
>>>> > @@ -126,6 +126,8 @@ struct ofproto_port_rstp_settings {
>>>> >     bool admin_edge_port;
>>>> >     bool auto_edge;
>>>> >     bool mcheck;
>>>> > +    uint8_t admin_p2p_mac_state;
>>>> > +    bool admin_port_state;
>>>> > };
>>>> >
>>>> > struct ofproto_stp_settings {
>>>> > diff --git a/utilities/ovs-vsctl.8.in <http://ovs-vsctl.8.in/> 
>>>> > b/utilities/ovs-vsctl.8.in <http://ovs-vsctl.8.in/>
>>>> > index 8cf13ae..2902a27 100644
>>>> > --- a/utilities/ovs-vsctl.8.in <http://ovs-vsctl.8.in/>
>>>> > +++ b/utilities/ovs-vsctl.8.in <http://ovs-vsctl.8.in/>
>>>> > @@ -1073,6 +1073,15 @@ Set the auto edge value of port \fBeth0\fR:
>>>> > .IP
>>>> > .B "ovs\-vsctl set Port eth0 other_config:rstp-port-auto-edge=true"
>>>> > .PP
>>>> > +Set the admin point to point mac value  of port \fBeth0\fR.
>>>> 
>>>> Remove extra space after ‘value‘.
>>>> 
>>>> > +Acceptable values are 0 (force false), 1 (force true) or 2 (auto).
>>>> > +.IP
>>>> > +.B "ovs\-vsctl set Port eth0 other_config:rstp-admin-p2p-mac=1"
>>>> > +.PP
>>>> > +Set the admin port state value of port \fBeth0\fR.
>>>> > +.IP
>>>> > +.B "ovs\-vsctl set Port eth0 other_config:rstp-admin-port-state=true"
>>>> > +.PP
>>>> > Set the mcheck value of port \fBeth0\fR:
>>>> > .IP
>>>> > .B "ovs\-vsctl set Port eth0 other_config:rstp-port-mcheck=true"
>>>> > diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
>>>> > index 20cfcba..a5fb361 100644
>>>> > --- a/vswitchd/bridge.c
>>>> > +++ b/vswitchd/bridge.c
>>>> > @@ -1398,6 +1398,16 @@ port_configure_rstp(const struct ofproto 
>>>> > *ofproto, struct port *port,
>>>> >         port_s->priority = RSTP_DEFAULT_PORT_PRIORITY;
>>>> >     }
>>>> >
>>>> > +    config_str = smap_get(&port->cfg->other_config, 
>>>> > "rstp-admin-p2p-mac");
>>>> > +    if (config_str) {
>>>> > +        port_s->admin_p2p_mac_state = strtoul(config_str, NULL, 0);
>>>> > +    } else {
>>>> > +        port_s->admin_p2p_mac_state =  RSTP_ADMIN_P2P_MAC_FORCE_TRUE;
>>>> 
>>>> Remove extra space after ‘=‘.
>>>> 
>>>> > +    }
>>>> > +
>>>> > +    port_s->admin_port_state = smap_get_bool(&port->cfg->other_config,
>>>> > +                                             "rstp-admin-port-state", 
>>>> > true);
>>>> > +
>>>> >     port_s->admin_edge_port = smap_get_bool(&port->cfg->other_config,
>>>> >                                             "rstp-port-admin-edge", 
>>>> > false);
>>>> >     port_s->auto_edge = smap_get_bool(&port->cfg->other_config,
>>>> > --
>>>> > 1.8.1.2
>>>> >
>>>> 
>>>> 
>>> 
>>>  
>>> Daniele 
>> 
>> 
> 
> 

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to