Message ID | 20200421160426.486578-1-numans@ovn.org |
---|---|
State | Superseded |
Headers | show |
Series | [ovs-dev,ovn] controller: Use OpenFlow version 1.5 | expand |
On 4/21/20 6:04 PM, numans@ovn.org wrote: > From: Numan Siddique <numans@ovn.org> > > When adding flows to the group table, we need to use OFP15_VERSION to > set the selection_method. Right now ovn-controller is setting > select_method=dp_hash for OVN load balancers, but when encoding the > group mod, it is ignored. > > Signed-off-by: Numan Siddique <numans@ovn.org> > --- > controller/ofctrl.c | 14 +++++++------- > controller/ovn-controller.c | 2 +- > controller/pinctrl.c | 2 +- > lib/actions.c | 10 +++++----- > lib/expr.c | 2 +- > tests/ovn.at | 6 +++--- > 6 files changed, 18 insertions(+), 18 deletions(-) Hi, Numan. I see some more places where we might want to change 1.3 to 1.5, i.e. ovn-controller-vtep might need to report OFP15_VERSION and also utilities like ovn-sbctl and ovn-trace might need to open connections with 1.5 version for flow dumps. What do you think? Best regards, Ilya Maximets. > > diff --git a/controller/ofctrl.c b/controller/ofctrl.c > index 36e39ba06..b31a04190 100644 > --- a/controller/ofctrl.c > +++ b/controller/ofctrl.c > @@ -178,7 +178,7 @@ ofctrl_init(struct ovn_extend_table *group_table, > int inactivity_probe_interval) > { > swconn = rconn_create(inactivity_probe_interval, 0, > - DSCP_DEFAULT, 1 << OFP13_VERSION); > + DSCP_DEFAULT, 1 << OFP15_VERSION); > tx_counter = rconn_packet_counter_create(); > hmap_init(&installed_flows); > ovs_list_init(&flow_updates); > @@ -282,8 +282,8 @@ process_tlv_table_reply(const struct ofputil_tlv_table_reply *reply) > ovs_list_init(&ttm.mappings); > ovs_list_push_back(&ttm.mappings, &tm.list_node); > > - xid = queue_msg(ofputil_encode_tlv_table_mod(OFP13_VERSION, &ttm)); > - xid2 = queue_msg(ofputil_encode_barrier_request(OFP13_VERSION)); > + xid = queue_msg(ofputil_encode_tlv_table_mod(OFP15_VERSION, &ttm)); > + xid2 = queue_msg(ofputil_encode_barrier_request(OFP15_VERSION)); > state = S_TLV_TABLE_MOD_SENT; > > return true; > @@ -911,7 +911,7 @@ encode_flow_mod(struct ofputil_flow_mod *fm) > fm->buffer_id = UINT32_MAX; > fm->out_port = OFPP_ANY; > fm->out_group = OFPG_ANY; > - return ofputil_encode_flow_mod(fm, OFPUTIL_P_OF13_OXM); > + return ofputil_encode_flow_mod(fm, OFPUTIL_P_OF15_OXM); > } > > static void > @@ -926,7 +926,7 @@ add_flow_mod(struct ofputil_flow_mod *fm, struct ovs_list *msgs) > static struct ofpbuf * > encode_group_mod(const struct ofputil_group_mod *gm) > { > - return ofputil_encode_group_mod(OFP13_VERSION, gm, NULL, -1); > + return ofputil_encode_group_mod(OFP15_VERSION, gm, NULL, -1); > } > > static void > @@ -940,7 +940,7 @@ add_group_mod(const struct ofputil_group_mod *gm, struct ovs_list *msgs) > static struct ofpbuf * > encode_meter_mod(const struct ofputil_meter_mod *mm) > { > - return ofputil_encode_meter_mod(OFP13_VERSION, mm); > + return ofputil_encode_meter_mod(OFP15_VERSION, mm); > } > > static void > @@ -1281,7 +1281,7 @@ ofctrl_put(struct ovn_desired_flow_table *flow_table, > > if (!ovs_list_is_empty(&msgs)) { > /* Add a barrier to the list of messages. */ > - struct ofpbuf *barrier = ofputil_encode_barrier_request(OFP13_VERSION); > + struct ofpbuf *barrier = ofputil_encode_barrier_request(OFP15_VERSION); > const struct ofp_header *oh = barrier->data; > ovs_be32 xid_ = oh->xid; > ovs_list_push_back(&msgs, &barrier->list_node); > diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c > index 4d21ba0fd..c2bf04cdb 100644 > --- a/controller/ovn-controller.c > +++ b/controller/ovn-controller.c > @@ -2297,7 +2297,7 @@ parse_options(int argc, char *argv[]) > usage(); > > case 'V': > - ovs_print_version(OFP13_VERSION, OFP13_VERSION); > + ovs_print_version(OFP15_VERSION, OFP15_VERSION); > exit(EXIT_SUCCESS); > > VLOG_OPTION_HANDLERS > diff --git a/controller/pinctrl.c b/controller/pinctrl.c > index 8592d4e3f..f16b65744 100644 > --- a/controller/pinctrl.c > +++ b/controller/pinctrl.c > @@ -2741,7 +2741,7 @@ pinctrl_handler(void *arg_) > static long long int svc_monitors_next_run_time = LLONG_MAX; > static long long int send_prefixd_time = LLONG_MAX; > > - swconn = rconn_create(5, 0, DSCP_DEFAULT, 1 << OFP13_VERSION); > + swconn = rconn_create(5, 0, DSCP_DEFAULT, 1 << OFP15_VERSION); > > while (!latch_is_set(&pctrl->pinctrl_thread_exit)) { > if (pctrl->br_int_name) { > diff --git a/lib/actions.c b/lib/actions.c > index b3bf98106..faa86b77e 100644 > --- a/lib/actions.c > +++ b/lib/actions.c > @@ -1509,7 +1509,7 @@ encode_nested_actions(const struct ovnact_nest *on, > size_t oc_offset = encode_start_controller_op(opcode, false, > NX_CTLR_NO_METER, ofpacts); > ofpacts_put_openflow_actions(inner_ofpacts.data, inner_ofpacts.size, > - ofpacts, OFP13_VERSION); > + ofpacts, OFP15_VERSION); > encode_finish_controller_op(oc_offset, ofpacts); > > /* Free memory. */ > @@ -2312,7 +2312,7 @@ encode_PUT_DHCPV4_OPTS(const struct ovnact_put_opts *pdo, > size_t oc_offset = encode_start_controller_op(ACTION_OPCODE_PUT_DHCP_OPTS, > true, NX_CTLR_NO_METER, > ofpacts); > - nx_put_header(ofpacts, dst.field->id, OFP13_VERSION, false); > + nx_put_header(ofpacts, dst.field->id, OFP15_VERSION, false); > ovs_be32 ofs = htonl(dst.ofs); > ofpbuf_put(ofpacts, &ofs, sizeof ofs); > > @@ -2343,7 +2343,7 @@ encode_PUT_DHCPV6_OPTS(const struct ovnact_put_opts *pdo, > > size_t oc_offset = encode_start_controller_op( > ACTION_OPCODE_PUT_DHCPV6_OPTS, true, NX_CTLR_NO_METER, ofpacts); > - nx_put_header(ofpacts, dst.field->id, OFP13_VERSION, false); > + nx_put_header(ofpacts, dst.field->id, OFP15_VERSION, false); > ovs_be32 ofs = htonl(dst.ofs); > ofpbuf_put(ofpacts, &ofs, sizeof ofs); > > @@ -2453,7 +2453,7 @@ encode_DNS_LOOKUP(const struct ovnact_dns_lookup *dl, > size_t oc_offset = encode_start_controller_op(ACTION_OPCODE_DNS_LOOKUP, > true, NX_CTLR_NO_METER, > ofpacts); > - nx_put_header(ofpacts, dst.field->id, OFP13_VERSION, false); > + nx_put_header(ofpacts, dst.field->id, OFP15_VERSION, false); > ovs_be32 ofs = htonl(dst.ofs); > ofpbuf_put(ofpacts, &ofs, sizeof ofs); > encode_finish_controller_op(oc_offset, ofpacts); > @@ -2617,7 +2617,7 @@ encode_PUT_ND_RA_OPTS(const struct ovnact_put_opts *po, > > size_t oc_offset = encode_start_controller_op( > ACTION_OPCODE_PUT_ND_RA_OPTS, true, NX_CTLR_NO_METER, ofpacts); > - nx_put_header(ofpacts, dst.field->id, OFP13_VERSION, false); > + nx_put_header(ofpacts, dst.field->id, OFP15_VERSION, false); > ovs_be32 ofs = htonl(dst.ofs); > ofpbuf_put(ofpacts, &ofs, sizeof ofs); > > diff --git a/lib/expr.c b/lib/expr.c > index 78646a1af..078d17840 100644 > --- a/lib/expr.c > +++ b/lib/expr.c > @@ -1414,7 +1414,7 @@ expr_symbol_format(const struct expr_symbol *symbol, struct ds *s) > } else if (symbol->ovn_field) { > ds_put_cstr(s, symbol->name); > } else { > - nx_format_field_name(symbol->field->id, OFP13_VERSION, s); > + nx_format_field_name(symbol->field->id, OFP15_VERSION, s); > } > } > > diff --git a/tests/ovn.at b/tests/ovn.at > index a52e644f0..7d457a061 100644 > --- a/tests/ovn.at > +++ b/tests/ovn.at > @@ -1211,7 +1211,7 @@ reg1[0] = put_dhcp_opts(offerip=1.2.3.4, domain_name=1.2.3.4); > > # nd_ns > nd_ns { nd.target = xxreg0; output; }; > - encodes as controller(userdata=00.00.00.09.00.00.00.00.ff.ff.00.18.00.00.23.20.00.06.00.80.00.00.00.00.00.01.de.10.00.01.2e.10.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) > + encodes as controller(userdata=00.00.00.09.00.00.00.00.00.1c.00.18.00.80.00.00.00.00.00.00.00.01.de.10.80.00.3e.10.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) > has prereqs ip6 > > nd_ns { }; > @@ -1222,12 +1222,12 @@ nd_ns { }; > # nd_na > nd_na { eth.src = 12:34:56:78:9a:bc; nd.tll = 12:34:56:78:9a:bc; outport = inport; inport = ""; /* Allow sending out inport. */ output; }; > formats as nd_na { eth.src = 12:34:56:78:9a:bc; nd.tll = 12:34:56:78:9a:bc; outport = inport; inport = ""; output; }; > - encodes as controller(userdata=00.00.00.03.00.00.00.00.00.19.00.10.80.00.08.06.12.34.56.78.9a.bc.00.00.00.19.00.10.80.00.42.06.12.34.56.78.9a.bc.00.00.ff.ff.00.18.00.00.23.20.00.06.00.20.00.00.00.00.00.01.1c.04.00.01.1e.04.00.19.00.10.00.01.1c.04.00.00.00.00.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) > + encodes as controller(userdata=00.00.00.03.00.00.00.00.00.19.00.10.80.00.08.06.12.34.56.78.9a.bc.00.00.00.19.00.10.80.00.42.06.12.34.56.78.9a.bc.00.00.00.1c.00.18.00.20.00.00.00.00.00.00.00.01.1c.04.00.01.1e.04.00.00.00.00.00.19.00.10.00.01.1c.04.00.00.00.00.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) > has prereqs nd_ns > # nd_na_router > nd_na_router { eth.src = 12:34:56:78:9a:bc; nd.tll = 12:34:56:78:9a:bc; outport = inport; inport = ""; /* Allow sending out inport. */ output; }; > formats as nd_na_router { eth.src = 12:34:56:78:9a:bc; nd.tll = 12:34:56:78:9a:bc; outport = inport; inport = ""; output; }; > - encodes as controller(userdata=00.00.00.0c.00.00.00.00.00.19.00.10.80.00.08.06.12.34.56.78.9a.bc.00.00.00.19.00.10.80.00.42.06.12.34.56.78.9a.bc.00.00.ff.ff.00.18.00.00.23.20.00.06.00.20.00.00.00.00.00.01.1c.04.00.01.1e.04.00.19.00.10.00.01.1c.04.00.00.00.00.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) > + encodes as controller(userdata=00.00.00.0c.00.00.00.00.00.19.00.10.80.00.08.06.12.34.56.78.9a.bc.00.00.00.19.00.10.80.00.42.06.12.34.56.78.9a.bc.00.00.00.1c.00.18.00.20.00.00.00.00.00.00.00.01.1c.04.00.01.1e.04.00.00.00.00.00.19.00.10.00.01.1c.04.00.00.00.00.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) > has prereqs nd_ns > > # get_nd >
On Wed, Apr 29, 2020 at 5:21 PM Ilya Maximets <i.maximets@ovn.org> wrote: > On 4/21/20 6:04 PM, numans@ovn.org wrote: > > From: Numan Siddique <numans@ovn.org> > > > > When adding flows to the group table, we need to use OFP15_VERSION to > > set the selection_method. Right now ovn-controller is setting > > select_method=dp_hash for OVN load balancers, but when encoding the > > group mod, it is ignored. > > > > Signed-off-by: Numan Siddique <numans@ovn.org> > > --- > > controller/ofctrl.c | 14 +++++++------- > > controller/ovn-controller.c | 2 +- > > controller/pinctrl.c | 2 +- > > lib/actions.c | 10 +++++----- > > lib/expr.c | 2 +- > > tests/ovn.at | 6 +++--- > > 6 files changed, 18 insertions(+), 18 deletions(-) > > Hi, Numan. > > I see some more places where we might want to change 1.3 to 1.5, i.e. > ovn-controller-vtep might need to report OFP15_VERSION and also utilities > like ovn-sbctl and ovn-trace might need to open connections with 1.5 > version > for flow dumps. What do you think? > Thanks for the comments. I thought I've taken care of ovn-sbctl and ovn-trace. I'll look into it thoroughly again. Regarding ovn-controller-vtep, I had left it out intentionally as I don't have much experience with ovn-controller-vtep and hence didn't want to touch it. Also I'm not sure if there is a requirement to move to OpenFlow 1.5 there. Thanks Numan > Best regards, Ilya Maximets. > > > > > diff --git a/controller/ofctrl.c b/controller/ofctrl.c > > index 36e39ba06..b31a04190 100644 > > --- a/controller/ofctrl.c > > +++ b/controller/ofctrl.c > > @@ -178,7 +178,7 @@ ofctrl_init(struct ovn_extend_table *group_table, > > int inactivity_probe_interval) > > { > > swconn = rconn_create(inactivity_probe_interval, 0, > > - DSCP_DEFAULT, 1 << OFP13_VERSION); > > + DSCP_DEFAULT, 1 << OFP15_VERSION); > > tx_counter = rconn_packet_counter_create(); > > hmap_init(&installed_flows); > > ovs_list_init(&flow_updates); > > @@ -282,8 +282,8 @@ process_tlv_table_reply(const struct > ofputil_tlv_table_reply *reply) > > ovs_list_init(&ttm.mappings); > > ovs_list_push_back(&ttm.mappings, &tm.list_node); > > > > - xid = queue_msg(ofputil_encode_tlv_table_mod(OFP13_VERSION, &ttm)); > > - xid2 = queue_msg(ofputil_encode_barrier_request(OFP13_VERSION)); > > + xid = queue_msg(ofputil_encode_tlv_table_mod(OFP15_VERSION, &ttm)); > > + xid2 = queue_msg(ofputil_encode_barrier_request(OFP15_VERSION)); > > state = S_TLV_TABLE_MOD_SENT; > > > > return true; > > @@ -911,7 +911,7 @@ encode_flow_mod(struct ofputil_flow_mod *fm) > > fm->buffer_id = UINT32_MAX; > > fm->out_port = OFPP_ANY; > > fm->out_group = OFPG_ANY; > > - return ofputil_encode_flow_mod(fm, OFPUTIL_P_OF13_OXM); > > + return ofputil_encode_flow_mod(fm, OFPUTIL_P_OF15_OXM); > > } > > > > static void > > @@ -926,7 +926,7 @@ add_flow_mod(struct ofputil_flow_mod *fm, struct > ovs_list *msgs) > > static struct ofpbuf * > > encode_group_mod(const struct ofputil_group_mod *gm) > > { > > - return ofputil_encode_group_mod(OFP13_VERSION, gm, NULL, -1); > > + return ofputil_encode_group_mod(OFP15_VERSION, gm, NULL, -1); > > } > > > > static void > > @@ -940,7 +940,7 @@ add_group_mod(const struct ofputil_group_mod *gm, > struct ovs_list *msgs) > > static struct ofpbuf * > > encode_meter_mod(const struct ofputil_meter_mod *mm) > > { > > - return ofputil_encode_meter_mod(OFP13_VERSION, mm); > > + return ofputil_encode_meter_mod(OFP15_VERSION, mm); > > } > > > > static void > > @@ -1281,7 +1281,7 @@ ofctrl_put(struct ovn_desired_flow_table > *flow_table, > > > > if (!ovs_list_is_empty(&msgs)) { > > /* Add a barrier to the list of messages. */ > > - struct ofpbuf *barrier = > ofputil_encode_barrier_request(OFP13_VERSION); > > + struct ofpbuf *barrier = > ofputil_encode_barrier_request(OFP15_VERSION); > > const struct ofp_header *oh = barrier->data; > > ovs_be32 xid_ = oh->xid; > > ovs_list_push_back(&msgs, &barrier->list_node); > > diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c > > index 4d21ba0fd..c2bf04cdb 100644 > > --- a/controller/ovn-controller.c > > +++ b/controller/ovn-controller.c > > @@ -2297,7 +2297,7 @@ parse_options(int argc, char *argv[]) > > usage(); > > > > case 'V': > > - ovs_print_version(OFP13_VERSION, OFP13_VERSION); > > + ovs_print_version(OFP15_VERSION, OFP15_VERSION); > > exit(EXIT_SUCCESS); > > > > VLOG_OPTION_HANDLERS > > diff --git a/controller/pinctrl.c b/controller/pinctrl.c > > index 8592d4e3f..f16b65744 100644 > > --- a/controller/pinctrl.c > > +++ b/controller/pinctrl.c > > @@ -2741,7 +2741,7 @@ pinctrl_handler(void *arg_) > > static long long int svc_monitors_next_run_time = LLONG_MAX; > > static long long int send_prefixd_time = LLONG_MAX; > > > > - swconn = rconn_create(5, 0, DSCP_DEFAULT, 1 << OFP13_VERSION); > > + swconn = rconn_create(5, 0, DSCP_DEFAULT, 1 << OFP15_VERSION); > > > > while (!latch_is_set(&pctrl->pinctrl_thread_exit)) { > > if (pctrl->br_int_name) { > > diff --git a/lib/actions.c b/lib/actions.c > > index b3bf98106..faa86b77e 100644 > > --- a/lib/actions.c > > +++ b/lib/actions.c > > @@ -1509,7 +1509,7 @@ encode_nested_actions(const struct ovnact_nest *on, > > size_t oc_offset = encode_start_controller_op(opcode, false, > > NX_CTLR_NO_METER, > ofpacts); > > ofpacts_put_openflow_actions(inner_ofpacts.data, inner_ofpacts.size, > > - ofpacts, OFP13_VERSION); > > + ofpacts, OFP15_VERSION); > > encode_finish_controller_op(oc_offset, ofpacts); > > > > /* Free memory. */ > > @@ -2312,7 +2312,7 @@ encode_PUT_DHCPV4_OPTS(const struct > ovnact_put_opts *pdo, > > size_t oc_offset = > encode_start_controller_op(ACTION_OPCODE_PUT_DHCP_OPTS, > > true, > NX_CTLR_NO_METER, > > ofpacts); > > - nx_put_header(ofpacts, dst.field->id, OFP13_VERSION, false); > > + nx_put_header(ofpacts, dst.field->id, OFP15_VERSION, false); > > ovs_be32 ofs = htonl(dst.ofs); > > ofpbuf_put(ofpacts, &ofs, sizeof ofs); > > > > @@ -2343,7 +2343,7 @@ encode_PUT_DHCPV6_OPTS(const struct > ovnact_put_opts *pdo, > > > > size_t oc_offset = encode_start_controller_op( > > ACTION_OPCODE_PUT_DHCPV6_OPTS, true, NX_CTLR_NO_METER, ofpacts); > > - nx_put_header(ofpacts, dst.field->id, OFP13_VERSION, false); > > + nx_put_header(ofpacts, dst.field->id, OFP15_VERSION, false); > > ovs_be32 ofs = htonl(dst.ofs); > > ofpbuf_put(ofpacts, &ofs, sizeof ofs); > > > > @@ -2453,7 +2453,7 @@ encode_DNS_LOOKUP(const struct ovnact_dns_lookup > *dl, > > size_t oc_offset = > encode_start_controller_op(ACTION_OPCODE_DNS_LOOKUP, > > true, > NX_CTLR_NO_METER, > > ofpacts); > > - nx_put_header(ofpacts, dst.field->id, OFP13_VERSION, false); > > + nx_put_header(ofpacts, dst.field->id, OFP15_VERSION, false); > > ovs_be32 ofs = htonl(dst.ofs); > > ofpbuf_put(ofpacts, &ofs, sizeof ofs); > > encode_finish_controller_op(oc_offset, ofpacts); > > @@ -2617,7 +2617,7 @@ encode_PUT_ND_RA_OPTS(const struct ovnact_put_opts > *po, > > > > size_t oc_offset = encode_start_controller_op( > > ACTION_OPCODE_PUT_ND_RA_OPTS, true, NX_CTLR_NO_METER, ofpacts); > > - nx_put_header(ofpacts, dst.field->id, OFP13_VERSION, false); > > + nx_put_header(ofpacts, dst.field->id, OFP15_VERSION, false); > > ovs_be32 ofs = htonl(dst.ofs); > > ofpbuf_put(ofpacts, &ofs, sizeof ofs); > > > > diff --git a/lib/expr.c b/lib/expr.c > > index 78646a1af..078d17840 100644 > > --- a/lib/expr.c > > +++ b/lib/expr.c > > @@ -1414,7 +1414,7 @@ expr_symbol_format(const struct expr_symbol > *symbol, struct ds *s) > > } else if (symbol->ovn_field) { > > ds_put_cstr(s, symbol->name); > > } else { > > - nx_format_field_name(symbol->field->id, OFP13_VERSION, s); > > + nx_format_field_name(symbol->field->id, OFP15_VERSION, s); > > } > > } > > > > diff --git a/tests/ovn.at b/tests/ovn.at > > index a52e644f0..7d457a061 100644 > > --- a/tests/ovn.at > > +++ b/tests/ovn.at > > @@ -1211,7 +1211,7 @@ reg1[0] = put_dhcp_opts(offerip=1.2.3.4, > domain_name=1.2.3.4); > > > > # nd_ns > > nd_ns { nd.target = xxreg0; output; }; > > - encodes as > controller(userdata=00.00.00.09.00.00.00.00.ff.ff.00.18.00.00.23.20.00.06.00.80.00.00.00.00.00.01.de.10.00.01.2e.10.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) > > + encodes as > controller(userdata=00.00.00.09.00.00.00.00.00.1c.00.18.00. > 80.00.00.00.00.00.00.00.01.de > .10.80.00.3e.10.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) > > has prereqs ip6 > > > > nd_ns { }; > > @@ -1222,12 +1222,12 @@ nd_ns { }; > > # nd_na > > nd_na { eth.src = 12:34:56:78:9a:bc; nd.tll = 12:34:56:78:9a:bc; > outport = inport; inport = ""; /* Allow sending out inport. */ output; }; > > formats as nd_na { eth.src = 12:34:56:78:9a:bc; nd.tll = > 12:34:56:78:9a:bc; outport = inport; inport = ""; output; }; > > - encodes as > controller(userdata=00.00.00.03.00.00.00.00.00.19.00.10.80.00.08.06.12.34.56.78.9a.bc.00.00.00.19.00.10.80.00.42.06.12.34.56.78.9a.bc.00.00.ff.ff.00.18.00.00.23.20.00.06.00.20.00.00.00.00.00.01.1c.04.00.01.1e.04.00.19.00.10.00.01.1c.04.00.00.00.00.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) > > + encodes as > controller(userdata=00.00.00.03.00.00.00.00.00.19.00.10.80.00.08.06.12.34.56.78.9a.bc.00.00.00.19.00.10.80.00.42.06.12.34.56.78.9a.bc.00.00.00.1c.00.18.00.20.00.00.00.00.00.00.00.01.1c.04.00.01.1e.04.00.00.00.00.00.19.00.10.00.01.1c.04.00.00.00.00.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) > > has prereqs nd_ns > > # nd_na_router > > nd_na_router { eth.src = 12:34:56:78:9a:bc; nd.tll = 12:34:56:78:9a:bc; > outport = inport; inport = ""; /* Allow sending out inport. */ output; }; > > formats as nd_na_router { eth.src = 12:34:56:78:9a:bc; nd.tll = > 12:34:56:78:9a:bc; outport = inport; inport = ""; output; }; > > - encodes as > controller(userdata=00.00.00.0c.00.00.00.00.00.19.00.10.80.00.08.06.12.34.56.78.9a.bc.00.00.00.19.00.10.80.00.42.06.12.34.56.78.9a.bc.00.00.ff.ff.00.18.00.00.23.20.00.06.00.20.00.00.00.00.00.01.1c.04.00.01.1e.04.00.19.00.10.00.01.1c.04.00.00.00.00.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) > > + encodes as > controller(userdata=00.00.00.0c.00.00.00.00.00.19.00.10.80.00.08.06.12.34.56.78.9a.bc.00.00.00.19.00.10.80.00.42.06.12.34.56.78.9a.bc.00.00.00.1c.00.18.00.20.00.00.00.00.00.00.00.01.1c.04.00.01.1e.04.00.00.00.00.00.19.00.10.00.01.1c.04.00.00.00.00.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) > > has prereqs nd_ns > > > > # get_nd > > > > _______________________________________________ > dev mailing list > dev@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > >
diff --git a/controller/ofctrl.c b/controller/ofctrl.c index 36e39ba06..b31a04190 100644 --- a/controller/ofctrl.c +++ b/controller/ofctrl.c @@ -178,7 +178,7 @@ ofctrl_init(struct ovn_extend_table *group_table, int inactivity_probe_interval) { swconn = rconn_create(inactivity_probe_interval, 0, - DSCP_DEFAULT, 1 << OFP13_VERSION); + DSCP_DEFAULT, 1 << OFP15_VERSION); tx_counter = rconn_packet_counter_create(); hmap_init(&installed_flows); ovs_list_init(&flow_updates); @@ -282,8 +282,8 @@ process_tlv_table_reply(const struct ofputil_tlv_table_reply *reply) ovs_list_init(&ttm.mappings); ovs_list_push_back(&ttm.mappings, &tm.list_node); - xid = queue_msg(ofputil_encode_tlv_table_mod(OFP13_VERSION, &ttm)); - xid2 = queue_msg(ofputil_encode_barrier_request(OFP13_VERSION)); + xid = queue_msg(ofputil_encode_tlv_table_mod(OFP15_VERSION, &ttm)); + xid2 = queue_msg(ofputil_encode_barrier_request(OFP15_VERSION)); state = S_TLV_TABLE_MOD_SENT; return true; @@ -911,7 +911,7 @@ encode_flow_mod(struct ofputil_flow_mod *fm) fm->buffer_id = UINT32_MAX; fm->out_port = OFPP_ANY; fm->out_group = OFPG_ANY; - return ofputil_encode_flow_mod(fm, OFPUTIL_P_OF13_OXM); + return ofputil_encode_flow_mod(fm, OFPUTIL_P_OF15_OXM); } static void @@ -926,7 +926,7 @@ add_flow_mod(struct ofputil_flow_mod *fm, struct ovs_list *msgs) static struct ofpbuf * encode_group_mod(const struct ofputil_group_mod *gm) { - return ofputil_encode_group_mod(OFP13_VERSION, gm, NULL, -1); + return ofputil_encode_group_mod(OFP15_VERSION, gm, NULL, -1); } static void @@ -940,7 +940,7 @@ add_group_mod(const struct ofputil_group_mod *gm, struct ovs_list *msgs) static struct ofpbuf * encode_meter_mod(const struct ofputil_meter_mod *mm) { - return ofputil_encode_meter_mod(OFP13_VERSION, mm); + return ofputil_encode_meter_mod(OFP15_VERSION, mm); } static void @@ -1281,7 +1281,7 @@ ofctrl_put(struct ovn_desired_flow_table *flow_table, if (!ovs_list_is_empty(&msgs)) { /* Add a barrier to the list of messages. */ - struct ofpbuf *barrier = ofputil_encode_barrier_request(OFP13_VERSION); + struct ofpbuf *barrier = ofputil_encode_barrier_request(OFP15_VERSION); const struct ofp_header *oh = barrier->data; ovs_be32 xid_ = oh->xid; ovs_list_push_back(&msgs, &barrier->list_node); diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c index 4d21ba0fd..c2bf04cdb 100644 --- a/controller/ovn-controller.c +++ b/controller/ovn-controller.c @@ -2297,7 +2297,7 @@ parse_options(int argc, char *argv[]) usage(); case 'V': - ovs_print_version(OFP13_VERSION, OFP13_VERSION); + ovs_print_version(OFP15_VERSION, OFP15_VERSION); exit(EXIT_SUCCESS); VLOG_OPTION_HANDLERS diff --git a/controller/pinctrl.c b/controller/pinctrl.c index 8592d4e3f..f16b65744 100644 --- a/controller/pinctrl.c +++ b/controller/pinctrl.c @@ -2741,7 +2741,7 @@ pinctrl_handler(void *arg_) static long long int svc_monitors_next_run_time = LLONG_MAX; static long long int send_prefixd_time = LLONG_MAX; - swconn = rconn_create(5, 0, DSCP_DEFAULT, 1 << OFP13_VERSION); + swconn = rconn_create(5, 0, DSCP_DEFAULT, 1 << OFP15_VERSION); while (!latch_is_set(&pctrl->pinctrl_thread_exit)) { if (pctrl->br_int_name) { diff --git a/lib/actions.c b/lib/actions.c index b3bf98106..faa86b77e 100644 --- a/lib/actions.c +++ b/lib/actions.c @@ -1509,7 +1509,7 @@ encode_nested_actions(const struct ovnact_nest *on, size_t oc_offset = encode_start_controller_op(opcode, false, NX_CTLR_NO_METER, ofpacts); ofpacts_put_openflow_actions(inner_ofpacts.data, inner_ofpacts.size, - ofpacts, OFP13_VERSION); + ofpacts, OFP15_VERSION); encode_finish_controller_op(oc_offset, ofpacts); /* Free memory. */ @@ -2312,7 +2312,7 @@ encode_PUT_DHCPV4_OPTS(const struct ovnact_put_opts *pdo, size_t oc_offset = encode_start_controller_op(ACTION_OPCODE_PUT_DHCP_OPTS, true, NX_CTLR_NO_METER, ofpacts); - nx_put_header(ofpacts, dst.field->id, OFP13_VERSION, false); + nx_put_header(ofpacts, dst.field->id, OFP15_VERSION, false); ovs_be32 ofs = htonl(dst.ofs); ofpbuf_put(ofpacts, &ofs, sizeof ofs); @@ -2343,7 +2343,7 @@ encode_PUT_DHCPV6_OPTS(const struct ovnact_put_opts *pdo, size_t oc_offset = encode_start_controller_op( ACTION_OPCODE_PUT_DHCPV6_OPTS, true, NX_CTLR_NO_METER, ofpacts); - nx_put_header(ofpacts, dst.field->id, OFP13_VERSION, false); + nx_put_header(ofpacts, dst.field->id, OFP15_VERSION, false); ovs_be32 ofs = htonl(dst.ofs); ofpbuf_put(ofpacts, &ofs, sizeof ofs); @@ -2453,7 +2453,7 @@ encode_DNS_LOOKUP(const struct ovnact_dns_lookup *dl, size_t oc_offset = encode_start_controller_op(ACTION_OPCODE_DNS_LOOKUP, true, NX_CTLR_NO_METER, ofpacts); - nx_put_header(ofpacts, dst.field->id, OFP13_VERSION, false); + nx_put_header(ofpacts, dst.field->id, OFP15_VERSION, false); ovs_be32 ofs = htonl(dst.ofs); ofpbuf_put(ofpacts, &ofs, sizeof ofs); encode_finish_controller_op(oc_offset, ofpacts); @@ -2617,7 +2617,7 @@ encode_PUT_ND_RA_OPTS(const struct ovnact_put_opts *po, size_t oc_offset = encode_start_controller_op( ACTION_OPCODE_PUT_ND_RA_OPTS, true, NX_CTLR_NO_METER, ofpacts); - nx_put_header(ofpacts, dst.field->id, OFP13_VERSION, false); + nx_put_header(ofpacts, dst.field->id, OFP15_VERSION, false); ovs_be32 ofs = htonl(dst.ofs); ofpbuf_put(ofpacts, &ofs, sizeof ofs); diff --git a/lib/expr.c b/lib/expr.c index 78646a1af..078d17840 100644 --- a/lib/expr.c +++ b/lib/expr.c @@ -1414,7 +1414,7 @@ expr_symbol_format(const struct expr_symbol *symbol, struct ds *s) } else if (symbol->ovn_field) { ds_put_cstr(s, symbol->name); } else { - nx_format_field_name(symbol->field->id, OFP13_VERSION, s); + nx_format_field_name(symbol->field->id, OFP15_VERSION, s); } } diff --git a/tests/ovn.at b/tests/ovn.at index a52e644f0..7d457a061 100644 --- a/tests/ovn.at +++ b/tests/ovn.at @@ -1211,7 +1211,7 @@ reg1[0] = put_dhcp_opts(offerip=1.2.3.4, domain_name=1.2.3.4); # nd_ns nd_ns { nd.target = xxreg0; output; }; - encodes as controller(userdata=00.00.00.09.00.00.00.00.ff.ff.00.18.00.00.23.20.00.06.00.80.00.00.00.00.00.01.de.10.00.01.2e.10.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) + encodes as controller(userdata=00.00.00.09.00.00.00.00.00.1c.00.18.00.80.00.00.00.00.00.00.00.01.de.10.80.00.3e.10.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) has prereqs ip6 nd_ns { }; @@ -1222,12 +1222,12 @@ nd_ns { }; # nd_na nd_na { eth.src = 12:34:56:78:9a:bc; nd.tll = 12:34:56:78:9a:bc; outport = inport; inport = ""; /* Allow sending out inport. */ output; }; formats as nd_na { eth.src = 12:34:56:78:9a:bc; nd.tll = 12:34:56:78:9a:bc; outport = inport; inport = ""; output; }; - encodes as controller(userdata=00.00.00.03.00.00.00.00.00.19.00.10.80.00.08.06.12.34.56.78.9a.bc.00.00.00.19.00.10.80.00.42.06.12.34.56.78.9a.bc.00.00.ff.ff.00.18.00.00.23.20.00.06.00.20.00.00.00.00.00.01.1c.04.00.01.1e.04.00.19.00.10.00.01.1c.04.00.00.00.00.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) + encodes as controller(userdata=00.00.00.03.00.00.00.00.00.19.00.10.80.00.08.06.12.34.56.78.9a.bc.00.00.00.19.00.10.80.00.42.06.12.34.56.78.9a.bc.00.00.00.1c.00.18.00.20.00.00.00.00.00.00.00.01.1c.04.00.01.1e.04.00.00.00.00.00.19.00.10.00.01.1c.04.00.00.00.00.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) has prereqs nd_ns # nd_na_router nd_na_router { eth.src = 12:34:56:78:9a:bc; nd.tll = 12:34:56:78:9a:bc; outport = inport; inport = ""; /* Allow sending out inport. */ output; }; formats as nd_na_router { eth.src = 12:34:56:78:9a:bc; nd.tll = 12:34:56:78:9a:bc; outport = inport; inport = ""; output; }; - encodes as controller(userdata=00.00.00.0c.00.00.00.00.00.19.00.10.80.00.08.06.12.34.56.78.9a.bc.00.00.00.19.00.10.80.00.42.06.12.34.56.78.9a.bc.00.00.ff.ff.00.18.00.00.23.20.00.06.00.20.00.00.00.00.00.01.1c.04.00.01.1e.04.00.19.00.10.00.01.1c.04.00.00.00.00.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) + encodes as controller(userdata=00.00.00.0c.00.00.00.00.00.19.00.10.80.00.08.06.12.34.56.78.9a.bc.00.00.00.19.00.10.80.00.42.06.12.34.56.78.9a.bc.00.00.00.1c.00.18.00.20.00.00.00.00.00.00.00.01.1c.04.00.01.1e.04.00.00.00.00.00.19.00.10.00.01.1c.04.00.00.00.00.00.00.00.00.ff.ff.00.10.00.00.23.20.00.0e.ff.f8.40.00.00.00) has prereqs nd_ns # get_nd