The LBVIPs already contain parsed versions of the load balancer keys, but the code was parsing it redundantly.
Slight performance improvement but much cleaner. Signed-off-by: Ben Pfaff <b...@ovn.org> --- northd/ovn_northd.dl | 37 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 25 deletions(-) diff --git a/northd/ovn_northd.dl b/northd/ovn_northd.dl index b72914d73..de2b0718c 100644 --- a/northd/ovn_northd.dl +++ b/northd/ovn_northd.dl @@ -5667,8 +5667,7 @@ LogicalRouterNdFlow(.lr = r, .drop = false, .priority = 90, .stage_hint = 0) :- - LBVIP[lbvip@&LBVIP{.vip_key = lb_key, .lb = lb}], - Some{(IPv6{var ip}, _)} = ip_address_and_port_from_lb_key(lb_key.ival()), + LBVIP[lbvip@&LBVIP{.vip_addr = IPv6{ip}, .lb = lb}], r in &Router(), r.load_balancer.contains(lb._uuid), &RouterPort(.router = r, .lrp = lrp, .is_redirect = is_redirect), @@ -6685,8 +6684,7 @@ Flow(.logical_datapath = r._uuid, .stage_hint = 0, .io_port = None, .controller_meter = None) :- - LBVIP[lbvip@&LBVIP{.vip_key = lb_key, .lb = lb}], - Some{(var ip, var port)} = ip_address_and_port_from_lb_key(lb_key.ival()), + LBVIP[lbvip@&LBVIP{.vip_addr = ip, .vip_port = port, .lb = lb}], var prio = if (port != 0) { 110 } else { 100 }, var proto = match (lb.protocol) { Some{proto} -> proto, @@ -6719,8 +6717,7 @@ Flow(.logical_datapath = r._uuid, .stage_hint = 0, .io_port = None, .controller_meter = None) :- - LBVIP[lbvip@&LBVIP{.vip_key = lb_key, .lb = lb}], - Some{(var ip, var port)} = ip_address_and_port_from_lb_key(lb_key.ival()), + LBVIP[lbvip@&LBVIP{.vip_addr = ip, .vip_port = port, .lb = lb}], var proto = match (lb.protocol) { Some{proto} -> proto, _ -> i"tcp" @@ -6765,8 +6762,7 @@ Flow(.logical_datapath = r._uuid, .stage_hint = stage_hint(lb._uuid), .io_port = None, .controller_meter = None) :- - LBVIP[lbvip@&LBVIP{.vip_key = lb_key, .lb = lb}], - Some{(var ip, var port)} = ip_address_and_port_from_lb_key(lb_key.ival()), + LBVIP[lbvip@&LBVIP{.vip_addr = ip, .vip_port = port, .lb = lb}], var proto = match (lb.protocol) { Some{proto} -> proto, _ -> i"tcp" @@ -6791,28 +6787,19 @@ Flow(.logical_datapath = r._uuid, .stage_hint = stage_hint(lb._uuid), .io_port = None, .controller_meter = None) :- - LBVIP[lbvip@&LBVIP{.vip_key = lb_key, .lb = lb, .backend_ips = backends}], - Some{(var ip, var port)} = ip_address_and_port_from_lb_key(lb_key.ival()), + LBVIP[lbvip@&LBVIP{.vip_addr = ip, .vip_port = port, .lb = lb, .backends = backends}], var proto = match (lb.protocol) { Some{proto} -> proto, _ -> i"tcp" }, - var conds = { - var conds = vec_empty(); - for (ip_str in backends.split(",")) { - match (ip_address_and_port_from_lb_key(ip_str)) { - None -> () /* FIXME: put a break here */, - Some{(ip_, port_)} -> conds.push( - "(${ip_.ipX()}.src == ${ip_}" ++ - if (port_ != 0) { - " && ${proto}.src == ${port_})" - } else { - ")" - }) - } + var conds = backends.map(|b| { + var port_match = if (b.port != 0) { + " && ${proto}.src == ${b.port}" + } else { + "" }; - conds.join(" || ") - }, + "(${b.ip.ipX()}.src == ${b.ip}" ++ port_match ++ ")" + }).join(" || "), conds != "", r in &Router(), Some{var gwport} = r.l3dgw_ports.nth(0), -- 2.31.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev