def read_all_vlan_info(self) -> Vlans: vids = self.get_list_keyval(".1.3.6.1.2.1.17.7.1.4.3.1.1") for vid_name, vid in vids: vid = safe_int(vid) if vid in (0, 1): continue yield Vlan(vid=vid, title=vid_name)
def read_all_vlan_info(self) -> Vlans: vid = 1 while True: res = self.get_next(".1.3.6.1.2.1.17.7.1.4.3.1.1.%d" % vid) vid = safe_int(res.value[5:]) if vid == 1: continue if vid == 0: return yield Vlan(vid=vid, title=res.value)
def read_all_vlan_info(self) -> Vlans: snmp_vid = 100000 while True: res = self.get_next(".1.3.6.1.2.1.2.2.1.1.%d" % snmp_vid) if res.snmp_type != "INTEGER": break vid = snmp_vid = safe_int(res.value) if vid < 100000 or vid > 104095: break vid = (vid - 100000) + 1 name = self._get_vid_name(vid=vid) yield Vlan(vid=vid, title=name)
def _calc_ret(vlan_untagged_egress_oid, vlan_egress_bitmap, table_no) -> Vlans: vlan_untagged_egress = self.get_item(vlan_untagged_egress_oid) vlan_untagged_egress = list( self.parse_eltex_vlan_map(vlan_untagged_egress, table=table_no)) is_native = next( (v == 1 for i, v in enumerate(vlan_untagged_egress, 1) if i >= port), False) return (Vlan(vid=vid, title=self._get_vid_name(vid=vid), native=is_native) for vid in self.parse_eltex_vlan_map(vlan_egress_bitmap, table=table_no))
def apply_vlan_config(self, serializer): device = self.device if not device: raise DeviceImplementationError("device could not found") port_num = serializer.data.get("port_num") if not port_num: raise DeviceImplementationError("port_num field required") mng = device.get_manager_object_switch() vlans_data = serializer.data.get("vlans") if not vlans_data: raise DeviceImplementationError("vlans field required") vlans_gen = (Vlan(**v) for v in vlans_data) mng.attach_vlans_to_port(vlan_list=vlans_gen, port_num=port_num)
def read_port_vlan_info(self, port: int) -> Vlans: if port > self.ports_len or port < 1: raise ValueError("Port must be in range 1-%d" % self.ports_len) vids = self.get_list_keyval(".1.3.6.1.2.1.17.7.1.4.3.1.1") for vid_name, vid in vids: vid = safe_int(vid) if vid in (0, 1): continue member_ports = self.get_item(".1.3.6.1.2.1.17.7.1.4.3.1.2.%d" % vid) if not member_ports: return member_ports = self._make_ports_map(member_ports[:4]) if not member_ports[port]: # if port num is not <port> continue name = self._get_vid_name(vid) yield Vlan(vid=vid, title=name)
def read_port_vlan_info(self, port: int) -> Vlans: if port > self.ports_len or port < 1: raise ValueError("Port must be in range 1-%d" % self.ports_len) vids = self.get_list_keyval(".1.3.6.1.4.1.171.10.134.1.1.7.6.1.1") native_vid = self.get_item(".1.3.6.1.4.1.171.10.134.1.1.7.7.1.1.%d" % port) if not native_vid: return for vidname, vid in vids: vid = safe_int(vid) if vid in (0, 1): continue member_ports = self.get_item( ".1.3.6.1.4.1.171.10.134.1.1.7.6.1.2.%d" % vid) if member_ports is None: return member_ports = self._make_ports_map(member_ports[:4]) if not member_ports[port - 1]: # if port num is not <port> continue yield Vlan(vid=vid, title=vidname, native=(vid == native_vid))
def read_port_vlan_info(self, port: int) -> Vlans: if port > self.ports_len or port < 1: raise DeviceImplementationError("Port must be in range 1-%d" % self.ports_len) vid = 1 while True: member_ports, vid = self.get_next_keyval( ".1.3.6.1.2.1.17.7.1.4.3.1.2.%d" % vid) if not member_ports: break if isinstance(member_ports, str): member_ports = member_ports.encode() vid = safe_int(vid) if vid in (0, 1): break member_ports = self._make_ports_map(member_ports[:4]) if not member_ports[port - 1]: continue untagged_members = self.get_item("1.3.6.1.2.1.17.7.1.4.3.1.4.%d" % vid) untagged_members = self._make_ports_map(untagged_members[:4]) name = self._get_vid_name(vid) yield Vlan(vid=vid, title=name, native=untagged_members[port - 1])
def read_all_vlan_info(self) -> Vlans: for vid, vname in self.get_list_keyval( ".1.3.6.1.4.1.3902.1015.20.2.1.2"): yield Vlan(vid=int(vid), title=vname)