dhcp: Make dhcp_option_to_string() act sensibly with null or empty options.
authorBen Pfaff <blp@nicira.com>
Wed, 30 Jul 2008 22:45:50 +0000 (15:45 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 30 Jul 2008 22:46:38 +0000 (15:46 -0700)
Also, update ofp-switch-setup to parse the new syntax.

debian/ofp-switch-setup
lib/dhcp.c

index 275ddfc..aa318d7 100755 (executable)
@@ -122,6 +122,8 @@ my (@states) =
                        $value =~ s/\\([0-7][0-7][0-7])/chr($1)/ge;
                    } else {
                        $value =~ s/^(0x[[:xdigit:]]+)$/hex($1)/e;
+                       $value = '' if $value eq 'empty';
+                       next if $value eq 'null'; # Shouldn't happen.
                    }
                    $options{$name} = $value;
                }
index 3c0ed82..0d3cf5f 100644 (file)
@@ -419,6 +419,11 @@ dhcp_option_to_string(const struct dhcp_option *opt, int code, struct ds *ds)
     }
     ds_put_char(ds, '=');
 
+    if (!opt->data || !opt->n) {
+        ds_put_cstr(ds, opt->data ? "empty" : "null");
+        return ds_cstr(ds);
+    }
+
     if (class->type == DHCP_ARG_STRING) {
         ds_put_char(ds, '"');
     }