From 23ff2821fd8b840dfeedcb47aeaed4fd060d73c8 Mon Sep 17 00:00:00 2001 From: Justin Pettit Date: Fri, 29 Jan 2010 15:31:52 -0800 Subject: [PATCH] ovs-vswitchd: Remove inline OpenFlow descriptions Replace inline OpenFlow descriptions with #define. Also, start work to support setting them dynamically. (This was originally working with the config file version of vswitchd, but needs to be updated to work with the config db.) --- ofproto/ofproto.c | 10 +++--- ofproto/ofproto.h | 6 ++++ vswitchd/bridge.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+), 5 deletions(-) diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index b962f61bf..764d4a82a 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -299,11 +299,11 @@ ofproto_create(const char *datapath, const char *datapath_type, p = xzalloc(sizeof *p); p->fallback_dpid = pick_fallback_dpid(); p->datapath_id = p->fallback_dpid; - p->manufacturer = xstrdup("Nicira Networks, Inc."); - p->hardware = xstrdup("Reference Implementation"); - p->software = xstrdup(VERSION BUILDNR); - p->serial = xstrdup("None"); - p->dp_desc = xstrdup("None"); + p->manufacturer = xstrdup(DEFAULT_MFR_DESC); + p->hardware = xstrdup(DEFAULT_HW_DESC); + p->software = xstrdup(DEFAULT_SW_DESC); + p->serial = xstrdup(DEFAULT_SERIAL_DESC); + p->dp_desc = xstrdup(DEFAULT_DP_DESC); /* Initialize datapath. */ p->dpif = dpif; diff --git a/ofproto/ofproto.h b/ofproto/ofproto.h index 668cdffb6..7fa6ed266 100644 --- a/ofproto/ofproto.h +++ b/ofproto/ofproto.h @@ -51,6 +51,12 @@ struct ofproto_sflow_options { char *control_ip; }; +#define DEFAULT_MFR_DESC "Nicira Networks, Inc." +#define DEFAULT_HW_DESC "Open vSwitch" +#define DEFAULT_SW_DESC VERSION BUILDNR +#define DEFAULT_SERIAL_DESC "None" +#define DEFAULT_DP_DESC "None" + int ofproto_create(const char *datapath, const char *datapath_type, const struct ofhooks *, void *aux, struct ofproto **ofprotop); diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c index c2e89eb83..63b0c9b21 100644 --- a/vswitchd/bridge.c +++ b/vswitchd/bridge.c @@ -163,6 +163,13 @@ struct bridge { /* OpenFlow switch processing. */ struct ofproto *ofproto; /* OpenFlow switch. */ + /* Description strings. */ + char *mfr_desc; /* Manufacturer. */ + char *hw_desc; /* Hardware. */ + char *sw_desc; /* Software version. */ + char *serial_desc; /* Serial number. */ + char *dp_desc; /* Datapath description. */ + /* Kernel datapath information. */ struct dpif *dpif; /* Datapath. */ struct port_array ifaces; /* Indexed by kernel datapath port number. */ @@ -1298,6 +1305,75 @@ check_duplicate_ifaces(struct bridge *br, struct iface *iface, void *ifaces_) } } +static void +bridge_update_desc(struct bridge *br) +{ +#if 0 + bool changed = false; + const char *desc; + + desc = cfg_get_string(0, "bridge.%s.mfr-desc", br->name); + if (desc != br->mfr_desc) { + free(br->mfr_desc); + if (desc) { + br->mfr_desc = xstrdup(desc); + } else { + br->mfr_desc = xstrdup(DEFAULT_MFR_DESC); + } + changed = true; + } + + desc = cfg_get_string(0, "bridge.%s.hw-desc", br->name); + if (desc != br->hw_desc) { + free(br->hw_desc); + if (desc) { + br->hw_desc = xstrdup(desc); + } else { + br->hw_desc = xstrdup(DEFAULT_HW_DESC); + } + changed = true; + } + + desc = cfg_get_string(0, "bridge.%s.sw-desc", br->name); + if (desc != br->sw_desc) { + free(br->sw_desc); + if (desc) { + br->sw_desc = xstrdup(desc); + } else { + br->sw_desc = xstrdup(DEFAULT_SW_DESC); + } + changed = true; + } + + desc = cfg_get_string(0, "bridge.%s.serial-desc", br->name); + if (desc != br->serial_desc) { + free(br->serial_desc); + if (desc) { + br->serial_desc = xstrdup(desc); + } else { + br->serial_desc = xstrdup(DEFAULT_SERIAL_DESC); + } + changed = true; + } + + desc = cfg_get_string(0, "bridge.%s.dp-desc", br->name); + if (desc != br->dp_desc) { + free(br->dp_desc); + if (desc) { + br->dp_desc = xstrdup(desc); + } else { + br->dp_desc = xstrdup(DEFAULT_DP_DESC); + } + changed = true; + } + + if (changed) { + ofproto_set_desc(br->ofproto, br->mfr_desc, br->hw_desc, + br->sw_desc, br->serial_desc, br->dp_desc); + } +#endif +} + static void bridge_reconfigure_one(const struct ovsrec_open_vswitch *ovs_cfg, struct bridge *br) @@ -1436,6 +1512,8 @@ bridge_reconfigure_one(const struct ovsrec_open_vswitch *ovs_cfg, #endif mirror_reconfigure(br); + + bridge_update_desc(br); } static void -- 2.43.0