diff options
Diffstat (limited to 'lib/ofp-parse.c')
-rw-r--r-- | lib/ofp-parse.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/ofp-parse.c b/lib/ofp-parse.c index a8b5a877c..a90b926ef 100644 --- a/lib/ofp-parse.c +++ b/lib/ofp-parse.c @@ -335,6 +335,16 @@ ofputil_parse_key_value(char **stringp, char **keyp, char **valuep) char *value = *stringp; size_t value_len = parse_value(value, value_delims); char value_delim = value[value_len]; + + /* Handle the special case if the value is of the form "(x)->y". + * After parsing, 'valuep' will be pointing to - "x)->y". + * */ + if (key_delim == '(' && value[value_len] == ')' && + value[value_len + 1] == '-' && value[value_len + 2] == '>') { + value_delims = ", \t\r\n"; + value_len += parse_value(&value[value_len], value_delims); + value_delim = value[value_len]; + } value[value_len] = '\0'; *stringp += value_len + (value_delim != '\0'); |