@@ -139,22 +139,26 @@ class ControlPlaneAclManager(daemon_base.DaemonBase):
139
139
140
140
self .config_db_map [front_asic_namespace ] = swsscommon .ConfigDBConnector (use_unix_socket_path = True , namespace = front_asic_namespace )
141
141
self .config_db_map [front_asic_namespace ].connect ()
142
- self .iptables_cmd_ns_prefix [front_asic_namespace ] = "ip netns exec " + front_asic_namespace + " "
143
- self .namespace_docker_mgmt_ip [front_asic_namespace ] = self .get_namespace_mgmt_ip (self .iptables_cmd_ns_prefix [front_asic_namespace ],
144
- front_asic_namespace )
145
- self .namespace_docker_mgmt_ipv6 [front_asic_namespace ] = self .get_namespace_mgmt_ipv6 (self .iptables_cmd_ns_prefix [front_asic_namespace ],
146
- front_asic_namespace )
142
+ self .update_docker_mgmt_ip_acl (front_asic_namespace )
147
143
148
144
for back_asic_namespace in namespaces ['back_ns' ]:
149
145
self .update_thread [back_asic_namespace ] = None
150
146
self .lock [back_asic_namespace ] = threading .Lock ()
151
147
self .num_changes [back_asic_namespace ] = 0
152
-
153
- self .iptables_cmd_ns_prefix [back_asic_namespace ] = "ip netns exec " + back_asic_namespace + " "
154
- self .namespace_docker_mgmt_ip [back_asic_namespace ] = self .get_namespace_mgmt_ip (self .iptables_cmd_ns_prefix [back_asic_namespace ],
155
- back_asic_namespace )
156
- self .namespace_docker_mgmt_ipv6 [back_asic_namespace ] = self .get_namespace_mgmt_ipv6 (self .iptables_cmd_ns_prefix [back_asic_namespace ],
157
- back_asic_namespace )
148
+ self .update_docker_mgmt_ip_acl (back_asic_namespace )
149
+
150
+ for fabric_asic_namespace in namespaces ['fabric_ns' ]:
151
+ self .update_thread [fabric_asic_namespace ] = None
152
+ self .lock [fabric_asic_namespace ] = threading .Lock ()
153
+ self .num_changes [fabric_asic_namespace ] = 0
154
+ self .update_docker_mgmt_ip_acl (fabric_asic_namespace )
155
+
156
+ def update_docker_mgmt_ip_acl (self , namespace ):
157
+ self .iptables_cmd_ns_prefix [namespace ] = "ip netns exec " + namespace + " "
158
+ self .namespace_docker_mgmt_ip [namespace ] = self .get_namespace_mgmt_ip (self .iptables_cmd_ns_prefix [namespace ],
159
+ namespace )
160
+ self .namespace_docker_mgmt_ipv6 [namespace ] = self .get_namespace_mgmt_ipv6 (self .iptables_cmd_ns_prefix [namespace ],
161
+ namespace )
158
162
159
163
def get_namespace_mgmt_ip (self , iptable_ns_cmd_prefix , namespace ):
160
164
ip_address_get_command = iptable_ns_cmd_prefix + "ip -4 -o addr show " + ("eth0" if namespace else "docker0" ) + \
@@ -551,6 +555,8 @@ class ControlPlaneAclManager(daemon_base.DaemonBase):
551
555
ip_protocols = self .ACL_SERVICES [acl_service ]["ip_protocols" ]
552
556
if "dst_ports" in self .ACL_SERVICES [acl_service ]:
553
557
dst_ports = self .ACL_SERVICES [acl_service ]["dst_ports" ]
558
+ else :
559
+ dst_ports = []
554
560
555
561
acl_rules = {}
556
562
@@ -604,6 +610,12 @@ class ControlPlaneAclManager(daemon_base.DaemonBase):
604
610
self .log_warning ("Unable to determine if ACL table '{}' contains IPv4 or IPv6 rules. Skipping table..."
605
611
.format (table_name ))
606
612
continue
613
+ # If no destination port found for this ACL table,
614
+ # log a message and skip processing this table.
615
+ if len (dst_ports ) == 0 :
616
+ self .log_warning ("Required destination port not found for ACL table '{}'. Skipping table..."
617
+ .format (table_name ))
618
+ continue
607
619
ipv4_src_ip_set = set ()
608
620
ipv6_src_ip_set = set ()
609
621
# For each ACL rule in this table (in descending order of priority)
0 commit comments