@@ -87,6 +87,10 @@ class PadWifiScan:
87
87
encryption = 30
88
88
signal = 9
89
89
90
+ class PadWifiStations :
91
+ mac = 20
92
+ signal = 9
93
+
90
94
91
95
class PadLldp :
92
96
interface = 16
@@ -651,13 +655,30 @@ def pr_proto_loopack(self, pipe=''):
651
655
row = self ._pr_proto_common ("loopback" , False , pipe );
652
656
print (row )
653
657
658
+ def pr_wifi_stations (self ):
659
+ hdr = "\n CONNECTED STATIONS"
660
+ print (Decore .invert (hdr ))
661
+ hdr = (f"{ 'MAC' :<{PadWifiStations .mac }} "
662
+ f"{ 'SIGNAL' :<{PadWifiStations .signal }} "
663
+ )
664
+ print (Decore .invert (hdr ))
665
+
666
+ stations = self .wifi .get ("connected-stations" , {})
667
+ for station in stations :
668
+ status = rssi_to_status (station ["rssi" ])
669
+ row = f"{ station ['mac' ]:<{PadWifiStations .mac }} "
670
+ row += f"{ status :<{PadWifiStations .signal }} "
671
+ print (row )
672
+
654
673
def pr_wifi_ssids (self ):
674
+ hdr = "\n SCAN RESULTS"
675
+ print (Decore .invert (hdr ))
655
676
hdr = (f"{ 'SSID' :<{PadWifiScan .ssid }} "
656
677
f"{ 'ENCRYPTION' :<{PadWifiScan .encryption }} "
657
678
f"{ 'SIGNAL' :<{PadWifiScan .signal }} "
658
679
)
659
-
660
680
print (Decore .invert (hdr ))
681
+
661
682
results = self .wifi .get ("scan-results" , {})
662
683
for result in results :
663
684
encstr = "," .join (result ["encryption" ])
@@ -676,14 +697,16 @@ def pr_proto_wifi(self, pipe=''):
676
697
rssi = None
677
698
status_str = ""
678
699
if self .wifi :
679
- rssi = self .wifi .get ("active-rssi" )
680
- ssid = self .wifi .get ("active-ssid" )
681
- else :
682
- signal = rssi_to_status (rssi )
683
-
684
- if ssid is not None :
685
- status_str = f"ssid: { ssid } , signal: { signal } "
686
-
700
+ if self .wifi .get ("mode" , "" ) == "client" :
701
+ ssid = self .wifi .get ("active-ssid" )
702
+ if ssid is not None :
703
+ rssi = self .wifi .get ("active-rssi" )
704
+ signal = rssi_to_status (rssi )
705
+
706
+ status_str = f"ssid: { ssid } , signal: { signal } "
707
+ elif self .wifi .get ("mode" , "" ) == "accesspoint" :
708
+ stations = self .wifi .get ("connected-stations" , {})
709
+ status_str = f"Connected stations: { len (stations )} "
687
710
row = f"{ '' :<{Pad .iface }} "
688
711
row += f"{ 'wifi' :<{Pad .proto }} "
689
712
row += f"{ '' :<{Pad .state }} { status_str } "
@@ -944,15 +967,6 @@ def pr_iface(self):
944
967
else :
945
968
print (f"{ 'ipv6 addresses' :<{20 }} :" )
946
969
947
- if self .wifi :
948
- ssid = self .wifi .get ('active-ssid' )
949
- rssi = self .wifi .get ('active-rssi' )
950
- if ssid is not None :
951
- print (f"{ 'SSID' :<{20 }} : { ssid } " )
952
- print (f"{ 'Signal' :<{20 }} : { rssi } " )
953
- print ("" )
954
- self .pr_wifi_ssids ()
955
-
956
970
if self .gre :
957
971
print (f"{ 'local address' :<{20 }} : { self .gre ['local' ]} " )
958
972
print (f"{ 'remote address' :<{20 }} : { self .gre ['remote' ]} " )
@@ -973,6 +987,18 @@ def pr_iface(self):
973
987
for key , val in frame .items ():
974
988
key = remove_yang_prefix (key )
975
989
print (f"eth-{ key :<{25 }} : { val } " )
990
+ if self .wifi :
991
+ ssid = self .wifi .get ('active-ssid' , "" )
992
+ rssi = self .wifi .get ('active-rssi' , "" )
993
+ mode = self .wifi .get ('mode' )
994
+ if mode == "client" :
995
+ print (f"{ 'SSID' :<{20 }} : { ssid } " )
996
+ print (f"{ 'Signal' :<{20 }} : { rssi } " )
997
+ print ("" )
998
+ self .pr_wifi_ssids ()
999
+ if mode == "accesspoint" :
1000
+ self .pr_wifi_stations ()
1001
+
976
1002
977
1003
def pr_mdb (self , bridge ):
978
1004
for group in self .br_mdb .get ("multicast-filter" , {}):
0 commit comments