treewide: Remove trailing whitespace
[sliver-openvswitch.git] / ofproto / discovery.c
index 2868db5..d7189fc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010 Nicira Networks.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +18,7 @@
 #include "discovery.h"
 #include <errno.h>
 #include <inttypes.h>
+#include <sys/socket.h>
 #include <net/if.h>
 #include <regex.h>
 #include <stdlib.h>
 #include "openflow/openflow.h"
 #include "packets.h"
 #include "status.h"
-#include "vconn-ssl.h"
-
-#define THIS_MODULE VLM_discovery
+#include "stream-ssl.h"
 #include "vlog.h"
 
+VLOG_DEFINE_THIS_MODULE(discovery)
+
 struct discovery {
+    char *dpif_name;
     char *re;
     bool update_resolv_conf;
     regex_t *regex;
@@ -58,7 +60,7 @@ discovery_status_cb(struct status_reply *sr, void *d_)
     if (d->dhcp) {
         status_reply_put(sr, "state=%s", dhclient_get_state(d->dhcp));
         status_reply_put(sr, "state-elapsed=%u",
-                         dhclient_get_state_elapsed(d->dhcp)); 
+                         dhclient_get_state_elapsed(d->dhcp));
         if (dhclient_is_bound(d->dhcp)) {
             uint32_t ip = dhclient_get_ip(d->dhcp);
             uint32_t netmask = dhclient_get_netmask(d->dhcp);
@@ -102,7 +104,9 @@ discovery_create(const char *re, bool update_resolv_conf,
     char local_name[IF_NAMESIZE];
     int error;
 
-    d = xcalloc(1, sizeof *d);
+    d = xzalloc(sizeof *d);
+
+    d->dpif_name = xstrdup(dpif_base_name(dpif));
 
     /* Controller regular expression. */
     error = discovery_set_accept_controller_re(d, re);
@@ -115,13 +119,15 @@ discovery_create(const char *re, bool update_resolv_conf,
     error = dpif_port_get_name(dpif, ODPP_LOCAL,
                                local_name, sizeof local_name);
     if (error) {
-        VLOG_ERR("failed to query datapath local port: %s", strerror(error));
+        VLOG_ERR("%s: failed to query datapath local port: %s",
+                 d->dpif_name, strerror(error));
         goto error_regfree;
     }
     error = dhclient_create(local_name, modify_dhcp_request,
                             validate_dhcp_offer, d, &d->dhcp);
     if (error) {
-        VLOG_ERR("failed to initialize DHCP client: %s", strerror(error));
+        VLOG_ERR("%s: failed to initialize DHCP client: %s",
+                 d->dpif_name, strerror(error));
         goto error_regfree;
     }
     dhclient_set_max_timeout(d->dhcp, 3);
@@ -137,6 +143,7 @@ error_regfree:
     regfree(d->regex);
     free(d->regex);
 error_free:
+    free(d->dpif_name);
     free(d);
     *discoveryp = 0;
     return error;
@@ -151,10 +158,17 @@ discovery_destroy(struct discovery *d)
         free(d->regex);
         dhclient_destroy(d->dhcp);
         switch_status_unregister(d->ss_cat);
+        free(d->dpif_name);
         free(d);
     }
 }
 
+bool
+discovery_get_update_resolv_conf(const struct discovery *d)
+{
+    return d->update_resolv_conf;
+}
+
 void
 discovery_set_update_resolv_conf(struct discovery *d,
                                  bool update_resolv_conf)
@@ -162,6 +176,12 @@ discovery_set_update_resolv_conf(struct discovery *d,
     d->update_resolv_conf = update_resolv_conf;
 }
 
+const char *
+discovery_get_accept_controller_re(const struct discovery *d)
+{
+    return d->re;
+}
+
 int
 discovery_set_accept_controller_re(struct discovery *d, const char *re_)
 {
@@ -169,7 +189,7 @@ discovery_set_accept_controller_re(struct discovery *d, const char *re_)
     int error;
     char *re;
 
-    re = (!re_ ? xstrdup(vconn_ssl_is_configured() ? "^ssl:.*" : "^tcp:.*")
+    re = (!re_ ? xstrdup(stream_ssl_is_configured() ? "^ssl:.*" : "^tcp:.*")
           : re_[0] == '^' ? xstrdup(re_) : xasprintf("^%s", re_));
     regex = xmalloc(sizeof *regex);
     error = regcomp(regex, re, REG_NOSUB | REG_EXTENDED);
@@ -177,7 +197,7 @@ discovery_set_accept_controller_re(struct discovery *d, const char *re_)
         size_t length = regerror(error, regex, NULL, 0);
         char *buffer = xmalloc(length);
         regerror(error, regex, buffer, length);
-        VLOG_WARN("%s: %s", re, buffer);
+        VLOG_WARN("%s: %s: %s", d->dpif_name, re, buffer);
         free(regex);
         free(re);
         return EINVAL;
@@ -198,7 +218,7 @@ void
 discovery_question_connectivity(struct discovery *d)
 {
     if (d->dhcp) {
-        dhclient_force_renew(d->dhcp, 15); 
+        dhclient_force_renew(d->dhcp, 15);
     }
 }
 
@@ -223,12 +243,14 @@ discovery_run(struct discovery *d, char **controller_name)
     if (dhclient_is_bound(d->dhcp)) {
         *controller_name = dhcp_msg_get_string(dhclient_get_config(d->dhcp),
                                                DHCP_CODE_OFP_CONTROLLER_VCONN);
-        VLOG_INFO("%s: discovered controller", *controller_name);
+        VLOG_INFO("%s: discovered controller %s",
+                  d->dpif_name, *controller_name);
         d->n_changes++;
     } else {
         *controller_name = NULL;
         if (d->n_changes) {
-            VLOG_INFO("discovered controller no longer available");
+            VLOG_INFO("%s: discovered controller no longer available",
+                      d->dpif_name);
             d->n_changes++;
         }
     }
@@ -239,12 +261,12 @@ void
 discovery_wait(struct discovery *d)
 {
     if (d->dhcp) {
-        dhclient_wait(d->dhcp); 
+        dhclient_wait(d->dhcp);
     }
 }
 
 static void
-modify_dhcp_request(struct dhcp_msg *msg, void *aux UNUSED)
+modify_dhcp_request(struct dhcp_msg *msg, void *aux OVS_UNUSED)
 {
     dhcp_msg_put_string(msg, DHCP_CODE_VENDOR_CLASS, "OpenFlow");
 }
@@ -258,13 +280,14 @@ validate_dhcp_offer(const struct dhcp_msg *msg, void *d_)
 
     vconn_name = dhcp_msg_get_string(msg, DHCP_CODE_OFP_CONTROLLER_VCONN);
     if (!vconn_name) {
-        VLOG_WARN_RL(&rl, "rejecting DHCP offer missing controller vconn");
+        VLOG_WARN_RL(&rl, "%s: rejecting DHCP offer missing controller vconn",
+                     d->dpif_name);
         return false;
     }
     accept = !regexec(d->regex, vconn_name, 0, NULL, 0);
     if (!accept) {
-        VLOG_WARN_RL(&rl, "rejecting controller vconn that fails to match %s",
-                     d->re);
+        VLOG_WARN_RL(&rl, "%s: rejecting controller vconn that fails to "
+                     "match %s", d->dpif_name, d->re);
     }
     free(vconn_name);
     return accept;