[ovs-dev] [PATCH] ovs-vswitchd: Log datapath ID in a more user-friendly way.

Justin Pettit jpettit at nicira.com
Thu Jul 5 22:20:28 UTC 2012


Looks good to me.

--Justin


On Jun 26, 2012, at 2:43 PM, Ben Pfaff wrote:

> The layering between ofproto and ovs-vswitchd caused the datapath ID to be
> logged in a needlessly confusing way.  First, ofproto would log its
> default datapath ID:
> 
>     using datapath ID 0000505400000004
> 
> then the bridge code would immediately determine the datapath ID that it
> wanted and call ofproto_set_datapath_id(), which would log the change
> 
>     datapath ID changed to 0000111122223333
> 
> This commit stops logging the default datapath ID, which is never actually
> visible in OpenFlow.  This should make the log files easier to understand.
> 
> Bug #12164.
> Reported-by: Jacob Cherkas <jcherkas at nicira.com>
> Signed-off-by: Ben Pfaff <blp at nicira.com>
> ---
> ofproto/ofproto.c |   11 ++++++-----
> ofproto/ofproto.h |    1 +
> vswitchd/bridge.c |    5 ++++-
> 3 files changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
> index 68bd485..dfc8db4 100644
> --- a/ofproto/ofproto.c
> +++ b/ofproto/ofproto.c
> @@ -404,8 +404,6 @@ ofproto_create(const char *datapath_name, const char *datapath_type,
>     assert(ofproto->n_tables);
> 
>     ofproto->datapath_id = pick_datapath_id(ofproto);
> -    VLOG_INFO("%s: using datapath ID %016"PRIx64,
> -              ofproto->name, ofproto->datapath_id);
>     init_ports(ofproto);
> 
>     *ofprotop = ofproto;
> @@ -427,15 +425,18 @@ ofproto_init_tables(struct ofproto *ofproto, int n_tables)
>     }
> }
> 
> +uint64_t
> +ofproto_get_datapath_id(const struct ofproto *ofproto)
> +{
> +    return ofproto->datapath_id;
> +}
> +
> void
> ofproto_set_datapath_id(struct ofproto *p, uint64_t datapath_id)
> {
>     uint64_t old_dpid = p->datapath_id;
>     p->datapath_id = datapath_id ? datapath_id : pick_datapath_id(p);
>     if (p->datapath_id != old_dpid) {
> -        VLOG_INFO("%s: datapath ID changed to %016"PRIx64,
> -                  p->name, p->datapath_id);
> -
>         /* Force all active connections to reconnect, since there is no way to
>          * notify a controller that the datapath ID has changed. */
>         ofproto_reconnect_controllers(p);
> diff --git a/ofproto/ofproto.h b/ofproto/ofproto.h
> index ea988e7..0919d81 100644
> --- a/ofproto/ofproto.h
> +++ b/ofproto/ofproto.h
> @@ -201,6 +201,7 @@ int ofproto_port_query_by_name(const struct ofproto *, const char *devname,
>                                struct ofproto_port *);
> 
> /* Top-level configuration. */
> +uint64_t ofproto_get_datapath_id(const struct ofproto *);
> void ofproto_set_datapath_id(struct ofproto *, uint64_t datapath_id);
> void ofproto_set_controllers(struct ofproto *,
>                              const struct ofproto_controller *, size_t n);
> diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
> index 67e29d2..3a3e58b 100644
> --- a/vswitchd/bridge.c
> +++ b/vswitchd/bridge.c
> @@ -754,7 +754,10 @@ bridge_configure_datapath_id(struct bridge *br)
>     memcpy(br->ea, ea, ETH_ADDR_LEN);
> 
>     dpid = bridge_pick_datapath_id(br, ea, hw_addr_iface);
> -    ofproto_set_datapath_id(br->ofproto, dpid);
> +    if (dpid != ofproto_get_datapath_id(br->ofproto)) {
> +        VLOG_INFO("bridge %s: using datapath ID %016"PRIx64, br->name, dpid);
> +        ofproto_set_datapath_id(br->ofproto, dpid);
> +    }
> 
>     dpid_string = xasprintf("%016"PRIx64, dpid);
>     ovsrec_bridge_set_datapath_id(br->cfg, dpid_string);
> -- 
> 1.7.2.5
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev




More information about the dev mailing list