Better abstract controller_connection.
authorBen Pfaff <blp@nicira.com>
Mon, 31 Mar 2008 16:53:11 +0000 (09:53 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 1 Apr 2008 16:52:59 +0000 (09:52 -0700)
switch/controller.c
switch/controller.h
switch/switch.c

index 57e8b9e61830ce2e7a9d05d7a3800a84fc233386..d8152311e90d4975595c9587bebaa976915d1d5f 100644 (file)
 #define THIS_MODULE VLM_controller_connection
 #include "vlog.h"
 
-void
-controller_init(struct controller_connection *cc,
-                const char *name, bool reliable)
+struct controller_connection {
+    bool reliable;
+    const char *name;
+    struct vconn *vconn;
+    bool connected;
+    struct queue txq;
+    time_t backoff_deadline;
+    int backoff;
+};
+
+struct controller_connection *
+controller_new(const char *name, bool reliable)
 {
+    struct controller_connection *cc = xmalloc(sizeof *cc);
     cc->reliable = reliable;
     cc->name = name;
     cc->vconn = NULL;
     queue_init(&cc->txq);
     cc->backoff_deadline = 0;
     cc->backoff = 0;
+    return cc;
 }
 
 static int
index c3108e411d56e77457e1e9c68827a94dda4da6ce..6c38dd11f81b1a17e245b022d030b186867a3dd0 100644 (file)
 #include <stdbool.h>
 #include <time.h>
 
-struct datapath;
-
-struct controller_connection {
-    bool reliable;
-    const char *name;
-    struct vconn *vconn;
-    bool connected;
-    struct queue txq;
-    time_t backoff_deadline;
-    int backoff;
-};
-
-void controller_init(struct controller_connection *,
-                     const char *name, bool reliable);
+struct controller_connection *controller_new(const char *name, bool reliable);
 void controller_run(struct controller_connection *);
 void controller_run_wait(struct controller_connection *);
 void controller_connect(struct controller_connection *);
index cbdc9654b22e15ac6bcfc5ae7b99e218ed09cc36..b36d9486c61f502906d72a5fed79ccbec72a9f4e 100644 (file)
@@ -66,7 +66,7 @@ static void add_ports(struct datapath *dp, char *port_list);
 int
 main(int argc, char *argv[])
 {
-    struct controller_connection cc;
+    struct controller_connection *cc;
     int error;
 
     set_program_name(argv[0]);
@@ -78,8 +78,8 @@ main(int argc, char *argv[])
         fatal(0, "missing controller argument; use --help for usage");
     }
 
-    controller_init(&cc, argv[optind], reliable);
-    error = dp_new(&dp, dpid, &cc);
+    cc = controller_new(argv[optind], reliable);
+    error = dp_new(&dp, dpid, cc);
     if (error) {
         fatal(error, "could not create datapath");
     }
@@ -95,11 +95,11 @@ main(int argc, char *argv[])
     for (;;) {
         dp_run(dp);
         fwd_run(dp);
-        controller_run(&cc);
+        controller_run(cc);
         
         dp_wait(dp);
         fwd_run_wait(dp);
-        controller_run_wait(&cc);
+        controller_run_wait(cc);
         poll_block();
     }