5
5
from ax_interface import MIBMeta , ValueType , MIBUpdater , SubtreeMIBEntry
6
6
from ax_interface .util import mac_decimals
7
7
from bisect import bisect_right
8
- from sonic_ax_impl .mibs import Namespace
9
8
10
9
class FdbUpdater (MIBUpdater ):
11
10
def __init__ (self ):
@@ -30,16 +29,24 @@ def fdb_vlanmac(self, fdb):
30
29
else :
31
30
vlan_id = Namespace .dbs_get_vlan_id_from_bvid (self .db_conn , fdb ["bvid" ])
32
31
self .bvid_vlan_map [fdb ["bvid" ]] = vlan_id
32
+ else :
33
+ return None
34
+ if not isinstance (vlan_id , str ):
35
+ return None
33
36
return (int (vlan_id ),) + mac_decimals (fdb ["mac" ])
34
-
37
+
35
38
def reinit_data (self ):
36
39
"""
37
40
Subclass update interface information
38
41
"""
39
- self .if_name_map , \
40
- self .if_alias_map , \
41
- self .if_id_map , \
42
- self .oid_name_map = Namespace .get_sync_d_from_all_namespace (mibs .init_sync_d_interface_tables , self .db_conn )
42
+ (
43
+ self .if_name_map ,
44
+ self .if_alias_map ,
45
+ self .if_id_map ,
46
+ self .oid_name_map ,
47
+ ) = Namespace .get_sync_d_from_all_namespace (
48
+ mibs .init_sync_d_interface_tables , self .db_conn
49
+ )
43
50
44
51
self .if_bpid_map = Namespace .dbs_get_bridge_port_map (self .db_conn , mibs .ASIC_DB )
45
52
self .bvid_vlan_map .clear ()
@@ -62,7 +69,7 @@ def update_data(self):
62
69
fdb = json .loads (fdb_str .split (":" , maxsplit = 2 )[- 1 ])
63
70
except ValueError as e : # includes simplejson.decoder.JSONDecodeError
64
71
mibs .logger .error ("SyncD 'ASIC_DB' includes invalid FDB_ENTRY '{}': {}." .format (fdb_str , e ))
65
- break
72
+ continue
66
73
67
74
ent = Namespace .dbs_get_all (self .db_conn , mibs .ASIC_DB , s , blocking = True )
68
75
# Example output: oid:0x3a000000000608
@@ -72,6 +79,9 @@ def update_data(self):
72
79
port_id = self .if_bpid_map [bridge_port_id ]
73
80
74
81
vlanmac = self .fdb_vlanmac (fdb )
82
+ if not vlanmac :
83
+ mibs .logger .error ("SyncD 'ASIC_DB' includes invalid FDB_ENTRY '{}': failed in fdb_vlanmac()." .format (fdb_str ))
84
+ continue
75
85
self .vlanmac_ifindex_map [vlanmac ] = mibs .get_index_from_str (self .if_id_map [port_id ])
76
86
self .vlanmac_ifindex_list .append (vlanmac )
77
87
self .vlanmac_ifindex_list .sort ()
0 commit comments