Thank you, I pushed this.
On Tue, Oct 18, 2011 at 12:56:20PM -0700, Ethan Jackson wrote: > Looks good. > > Ethan > > On Tue, Sep 27, 2011 at 16:59, Ben Pfaff <[email protected]> wrote: > > Otherwise, "table=257" (e.g.) was silently accepted but had a surprising > > effect. > > > > Bug #7445. > > Reported-by: Michael Mao <[email protected]> > > --- > > ?lib/ofp-parse.c | ? 30 ++++++++++++++++++++++++++---- > > ?1 files changed, 26 insertions(+), 4 deletions(-) > > > > diff --git a/lib/ofp-parse.c b/lib/ofp-parse.c > > index fd0a72e..75859b5 100644 > > --- a/lib/ofp-parse.c > > +++ b/lib/ofp-parse.c > > @@ -41,6 +41,28 @@ > > > > ?VLOG_DEFINE_THIS_MODULE(ofp_parse); > > > > +static uint8_t > > +str_to_table_id(const char *str) > > +{ > > + ? ?int table_id; > > + > > + ? ?if (!str_to_int(str, 10, &table_id) || table_id < 0 || table_id > 255) > > { > > + ? ? ? ?ovs_fatal(0, "invalid table \"%s\"", str); > > + ? ?} > > + ? ?return table_id; > > +} > > + > > +static uint16_t > > +str_to_u16(const char *str, const char *name) > > +{ > > + ? ?int value; > > + > > + ? ?if (!str_to_int(str, 0, &value) || value < 0 || value > 65535) { > > + ? ? ? ?ovs_fatal(0, "invalid %s \"%s\"", name, str); > > + ? ?} > > + ? ?return value; > > +} > > + > > ?static uint32_t > > ?str_to_u32(const char *str) > > ?{ > > @@ -541,15 +563,15 @@ parse_ofp_str(struct ofputil_flow_mod *fm, int > > command, const char *str_, > > ? ? ? ? ? ? } > > > > ? ? ? ? ? ? if (!strcmp(name, "table")) { > > - ? ? ? ? ? ? ? ?fm->table_id = atoi(value); > > + ? ? ? ? ? ? ? ?fm->table_id = str_to_table_id(value); > > ? ? ? ? ? ? } else if (!strcmp(name, "out_port")) { > > ? ? ? ? ? ? ? ? fm->out_port = atoi(value); > > ? ? ? ? ? ? } else if (fields & F_PRIORITY && !strcmp(name, "priority")) { > > - ? ? ? ? ? ? ? ?fm->cr.priority = atoi(value); > > + ? ? ? ? ? ? ? ?fm->cr.priority = str_to_u16(value, name); > > ? ? ? ? ? ? } else if (fields & F_TIMEOUT && !strcmp(name, "idle_timeout")) > > { > > - ? ? ? ? ? ? ? ?fm->idle_timeout = atoi(value); > > + ? ? ? ? ? ? ? ?fm->idle_timeout = str_to_u16(value, name); > > ? ? ? ? ? ? } else if (fields & F_TIMEOUT && !strcmp(name, "hard_timeout")) > > { > > - ? ? ? ? ? ? ? ?fm->hard_timeout = atoi(value); > > + ? ? ? ? ? ? ? ?fm->hard_timeout = str_to_u16(value, name); > > ? ? ? ? ? ? } else if (fields & F_COOKIE && !strcmp(name, "cookie")) { > > ? ? ? ? ? ? ? ? fm->cookie = htonll(str_to_u64(value)); > > ? ? ? ? ? ? } else if (mf_from_name(name)) { > > -- > > 1.7.4.4 > > > > _______________________________________________ > > dev mailing list > > [email protected] > > http://openvswitch.org/mailman/listinfo/dev > > _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
