dpif: New function dpif_get_netflow_ids().
authorBen Pfaff <blp@nicira.com>
Tue, 16 Jun 2009 17:59:43 +0000 (10:59 -0700)
committerBen Pfaff <blp@nicira.com>
Mon, 6 Jul 2009 16:07:23 +0000 (09:07 -0700)
The 'minor' member of struct dpif is used for two different purposes:
for printing in log messages and for encapsulating in NetFlow messages.
The needs in each case are different, so we should break up these uses.
This commit does half of that, by introducing a new function to retrieve
NetFlow ids and using it where appropriate.

lib/dpif.c
lib/dpif.h
vswitchd/bridge.c

index 3dc7af00704bb1d703edd3405b65c438cf4338c8..bcb4e7b44374a142bf61c504e01f015fe43c4b9b 100644 (file)
@@ -680,6 +680,13 @@ dpif_recv_wait(struct dpif *dpif)
 {
     poll_fd_wait(dpif->fd, POLLIN);
 }
+
+void
+dpif_get_netflow_ids(const struct dpif *dpif,
+                     uint8_t *engine_type, uint8_t *engine_id)
+{
+    *engine_type = *engine_id = dpif->minor;
+}
 \f
 struct dpifmon {
     struct dpif dpif;
index a0e603114a146e1fd2e277c39e405650a416cad6..52e8075b50316ab3daf45590f28be470f7381bfe 100644 (file)
@@ -89,6 +89,8 @@ dpif_id(const struct dpif *dpif)
 {
     return dpif->minor;
 }
+void dpif_get_netflow_ids(const struct dpif *,
+                          uint8_t *engine_type, uint8_t *engine_id);
 \f
 struct dpifmon;
 
index 7ecf12458f2a2a9380e0a0d04a20e90dccc7be03..47d67e37e3b5ec1f7ee198666584353de01a92db 100644 (file)
@@ -481,8 +481,7 @@ bridge_reconfigure(void)
         uint64_t dpid;
         struct iface *local_iface = NULL;
         const char *devname;
-        uint8_t engine_type = br->dpif.minor;
-        uint8_t engine_id = br->dpif.minor;
+        uint8_t engine_type, engine_id;
         bool add_id_to_iface = false;
         struct svec nf_hosts;
 
@@ -529,6 +528,7 @@ bridge_reconfigure(void)
         ofproto_set_datapath_id(br->ofproto, dpid);
 
         /* Set NetFlow configuration on this bridge. */
+        dpif_get_netflow_ids(&br->dpif, &engine_type, &engine_id);
         if (cfg_has("netflow.%s.engine-type", br->name)) {
             engine_type = cfg_get_int(0, "netflow.%s.engine-type", 
                     br->name);