From: Leonid Ryzhyk <[email protected]> Change the type of record in the `RouterPort` table from `Ref<RouterPort>` to `Intern<RouterPort>`.
Signed-off-by: Leonid Ryzhyk <[email protected]> Signed-off-by: Ben Pfaff <[email protected]> --- northd/lrouter.dl | 37 +++++++++++++++++++++---------------- northd/lswitch.dl | 4 ++-- northd/ovn_northd.dl | 14 +++++++------- 3 files changed, 30 insertions(+), 25 deletions(-) diff --git a/northd/lrouter.dl b/northd/lrouter.dl index 87550c4fcb36..68df41d02a80 100644 --- a/northd/lrouter.dl +++ b/northd/lrouter.dl @@ -23,7 +23,7 @@ import lswitch function is_enabled(lr: nb::Logical_Router): bool { is_enabled(lr.enabled) } function is_enabled(lrp: nb::Logical_Router_Port): bool { is_enabled(lrp.enabled) } function is_enabled(rp: RouterPort): bool { rp.lrp.is_enabled() } -function is_enabled(rp: Ref<RouterPort>): bool { rp.lrp.is_enabled() } +function is_enabled(rp: Intern<RouterPort>): bool { rp.lrp.is_enabled() } /* default logical flow prioriry for distributed routes */ function dROUTE_PRIO(): bit<32> = 400 @@ -585,7 +585,7 @@ RouterPortHasBfd(lrp_uuid, false) :- /* FIXME: what should happen when extract_lrp_networks fails? */ /* RouterPort relation collects all attributes of a logical router port */ -relation &RouterPort( +typedef RouterPort = RouterPort { lrp: nb::Logical_Router_Port, json_name: string, networks: lport_addresses, @@ -594,17 +594,22 @@ relation &RouterPort( peer: RouterPeer, mcast_cfg: Ref<McastPortCfg>, sb_options: Map<string,string>, - has_bfd: bool) - -&RouterPort(.lrp = lrp, - .json_name = json_string_escape(lrp.name), - .networks = networks, - .router = router, - .is_redirect = is_redirect, - .peer = peer, - .mcast_cfg = mcast_cfg, - .sb_options = sb_options, - .has_bfd = has_bfd) :- + has_bfd: bool +} + +relation RouterPort[Intern<RouterPort>] + +RouterPort[RouterPort{ + .lrp = lrp, + .json_name = json_string_escape(lrp.name), + .networks = networks, + .router = router, + .is_redirect = is_redirect, + .peer = peer, + .mcast_cfg = mcast_cfg, + .sb_options = sb_options, + .has_bfd = has_bfd + }.intern()] :- nb::Logical_Router_Port[lrp], Some{var networks} = extract_lrp_networks(lrp.mac, lrp.networks), LogicalRouterPort(lrp._uuid, lrouter_uuid), @@ -615,13 +620,13 @@ relation &RouterPort( RouterPortSbOptions(lrp._uuid, sb_options), RouterPortHasBfd(lrp._uuid, has_bfd). -relation RouterPortNetworksIPv4Addr(port: Ref<RouterPort>, addr: ipv4_netaddr) +relation RouterPortNetworksIPv4Addr(port: Intern<RouterPort>, addr: ipv4_netaddr) RouterPortNetworksIPv4Addr(port, addr) :- port in &RouterPort(.networks = networks), var addr = FlatMap(networks.ipv4_addrs). -relation RouterPortNetworksIPv6Addr(port: Ref<RouterPort>, addr: ipv6_netaddr) +relation RouterPortNetworksIPv6Addr(port: Intern<RouterPort>, addr: ipv6_netaddr) RouterPortNetworksIPv6Addr(port, addr) :- port in &RouterPort(.networks = networks), @@ -743,7 +748,7 @@ RouterStaticRoute_(.router = router, typedef route_dst = RouteDst { nexthop: v46_ip, src_ip: v46_ip, - port: Ref<RouterPort>, + port: Intern<RouterPort>, ecmp_symmetric_reply: bool } diff --git a/northd/lswitch.dl b/northd/lswitch.dl index a91e7275a4ea..6b2ae37a1608 100644 --- a/northd/lswitch.dl +++ b/northd/lswitch.dl @@ -27,7 +27,7 @@ function is_enabled(lsp: Ref<nb::Logical_Switch_Port>): bool { lsp.deref().is_en function is_enabled(sp: SwitchPort): bool { sp.lsp.is_enabled() } function is_enabled(sp: Intern<SwitchPort>): bool { sp.lsp.is_enabled() } -relation SwitchRouterPeerRef(lsp: uuid, rport: Option<Ref<RouterPort>>) +relation SwitchRouterPeerRef(lsp: uuid, rport: Option<Intern<RouterPort>>) SwitchRouterPeerRef(lsp, Some{rport}) :- SwitchRouterPeer(lsp, _, lrp), @@ -555,7 +555,7 @@ typedef SwitchPort = SwitchPort { lsp: nb::Logical_Switch_Port, json_name: string, sw: Intern<Switch>, - peer: Option<Ref<RouterPort>>, + peer: Option<Intern<RouterPort>>, static_addresses: Vec<lport_addresses>, dynamic_address: Option<lport_addresses>, static_dynamic_mac: Option<eth_addr>, diff --git a/northd/ovn_northd.dl b/northd/ovn_northd.dl index 502e204f02c5..25d34b3611bc 100644 --- a/northd/ovn_northd.dl +++ b/northd/ovn_northd.dl @@ -200,7 +200,7 @@ OutProxy_Port_Binding(._uuid = lsp._uuid, Some{"router"} -> match ((l3dgw_port, opt_chassis, peer)) { (None, None, _) -> set_empty(), (_, _, None) -> set_empty(), - (_, _, Some{rport}) -> get_nat_addresses(deref(rport)) + (_, _, Some{rport}) -> get_nat_addresses(rport) }, Some{nat_addresses} -> { /* Only accept manual specification of ethernet address @@ -241,7 +241,7 @@ OutProxy_Port_Binding(._uuid = lsp._uuid, (rport.router.options.contains_key("chassis") and not sw.localnet_ports.is_empty())) { false -> set_empty(), - true -> set_singleton(get_garp_nat_addresses(deref(rport))) + true -> set_singleton(get_garp_nat_addresses(rport)) }, None -> set_empty() }, @@ -324,7 +324,7 @@ function get_router_load_balancer_ips(router: Intern<Router>) : * external IP addresses of all NAT rules defined on that router, and all * of the IP addresses used in load balancer VIPs defined on that router. */ -function get_nat_addresses(rport: RouterPort): Set<string> = +function get_nat_addresses(rport: Intern<RouterPort>): Set<string> = { var addresses = set_empty(); var has_redirect = rport.router.l3dgw_port.is_some(); @@ -399,7 +399,7 @@ function get_nat_addresses(rport: RouterPort): Set<string> = } } -function get_garp_nat_addresses(rport: RouterPort): string = { +function get_garp_nat_addresses(rport: Intern<RouterPort>): string = { var garp_info = ["${rport.networks.ea}"]; for (ipv4_addr in rport.networks.ipv4_addrs) { garp_info.push("${ipv4_addr.addr}") @@ -4002,7 +4002,7 @@ for (SwitchPortStaticAddresses(.port = &SwitchPort{.lsp = lsp, .json_name = json /* Returns 'true' if the IP 'addr' is on the same subnet with one of the * IPs configured on the router port. */ -function lrouter_port_ip_reachable(rp: Ref<RouterPort>, addr: v46_ip): bool { +function lrouter_port_ip_reachable(rp: Intern<RouterPort>, addr: v46_ip): bool { match (addr) { IPv4{ipv4} -> { for (na in rp.networks.ipv4_addrs) { @@ -4051,7 +4051,7 @@ UniqueFlow[Flow{.logical_datapath = sw._uuid, * router port. * Priority: 80. */ -function get_arp_forward_ips(rp: Ref<RouterPort>): (Set<string>, Set<string>) = { +function get_arp_forward_ips(rp: Intern<RouterPort>): (Set<string>, Set<string>) = { var all_ips_v4 = set_empty(); var all_ips_v6 = set_empty(); @@ -6303,7 +6303,7 @@ for (&Router(._uuid = lr_uuid)) * the following rule. */ relation Route(key: route_key, // matching criteria - port: Ref<RouterPort>, // output port + port: Intern<RouterPort>, // output port src_ip: v46_ip, // source IP address for output gateway: Option<v46_ip>) // next hop (unless being delivered) -- 2.31.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
