ofproto: Use 64-bit datapath id and management id (OpenFlow 0.9)
[sliver-openvswitch.git] / lib / cfg.c
index 433d7a0..ed36a88 100644 (file)
--- a/lib/cfg.c
+++ b/lib/cfg.c
@@ -92,6 +92,12 @@ static bool is_type(const char *s, enum cfg_flags);
 #define CC_FILE_NAME CC_ALNUM "._-"
 #define CC_KEY CC_ALNUM "._-@$:+"
 
+void
+cfg_init(void)
+{
+    svec_terminate(&cfg);
+}
+
 /* Sets 'file_name' as the configuration file read by cfg_read().  Returns 0 on
  * success, otherwise a positive errno value if 'file_name' cannot be opened.
  *
@@ -130,7 +136,7 @@ cfg_set_file(const char *file_name)
     slash = strrchr(file_name, '/');
     if (slash) {
         lock_name = xasprintf("%.*s/.%s.~lock~",
-                              slash - file_name, file_name, slash + 1);
+                              (int) (slash - file_name), file_name, slash + 1);
     } else {
         lock_name = xasprintf(".%s.~lock~", file_name);
     }
@@ -183,6 +189,7 @@ cfg_read(void)
     file = fopen(cfg_name, "r");
     if (!file) {
         VLOG_ERR("failed to open \"%s\": %s", cfg_name, strerror(errno));
+        svec_terminate(&cfg);
         return errno;
     }
 
@@ -827,7 +834,7 @@ cfg_get_mac(int idx, const char *key_, ...)
 
 /* Returns the value numbered 'idx' of 'key', parsed as an datapath ID.
  * Returns 0 if 'idx' is greater than or equal to cfg_count(key) or if the
- * value 'idx' of 'key' is not a valid datapath ID consisting of exactly 12
+ * value 'idx' of 'key' is not a valid datapath ID consisting of exactly 16
  * hexadecimal digits.  */
 uint64_t
 cfg_get_dpid(int idx, const char *key_, ...)
@@ -1127,7 +1134,7 @@ parse_mac(const char *s, uint8_t mac[6])
 static bool
 parse_dpid(const char *s, uint64_t *dpid)
 {
-    if (strlen(s) == 12 && strspn(s, "0123456789abcdefABCDEF") == 12) {
+    if (strlen(s) == 16 && strspn(s, "0123456789abcdefABCDEF") == 16) {
         *dpid = strtoll(s, NULL, 16);
         return true;
     } else {