哪里有纳米克利和列表存储看到的访问点的缓存列表:在公共文件中还是在易失性存储器中?
答案1
快速查看nmcli
源代码 ( $ apt-get source network-manager
),似乎包含 AP 信息的结构 ( src/devices/wifi/nm-wifi-ap.c
) 存储在易失性内存中(我不确定该结构是动态分配的还是静态分配的,但我会选择前者)。
结构是这样的(其实有两个):
typedef struct {
char *supplicant_path; /* D-Bus object path of this AP from wpa_supplicant */
/* Scanned or cached values */
GByteArray * ssid;
char * address;
NM80211Mode mode;
guint8 strength;
guint32 freq; /* Frequency in MHz; ie 2412 (== 2.412 GHz) */
guint32 max_bitrate; /* Maximum bitrate of the AP in Kbit/s (ie 54000 Kb/s == 54Mbit/s) */
NM80211ApFlags flags; /* General flags */
NM80211ApSecurityFlags wpa_flags; /* WPA-related flags */
NM80211ApSecurityFlags rsn_flags; /* RSN (WPA2) -related flags */
/* Non-scanned attributes */
bool fake:1; /* Whether or not the AP is from a scan */
bool hotspot:1; /* Whether the AP is a local device's hotspot network */
gint32 last_seen; /* Timestamp when the AP was seen lastly (obtained via nm_utils_get_monotonic_timestamp_s()) */
} NMWifiAPPrivate;
struct _NMWifiAP {
NMExportedObject parent;
NMWifiAPPrivate _priv;
};
我没有深入挖掘代码,所以我可能是错的,但我认为这个结构在我们调用时被分配和实现nmcli device wifi list
,然后在命令退出时被销毁。也许有更复杂的功能,这意味着某种文件或内存转储中的“保存状态”,但我现在不能说。
我不能说 iwlist (实际上没有查看代码)。
我会将其作为评论发布,因为它并不是真正的答案,但它显然太长了。
更新
看着nmcli github 页面, 它指出:
NetworkManager 守护进程作为特权服务运行(因为它必须访问和控制硬件),但在系统总线上提供 D-Bus 接口以允许对网络进行细粒度控制。 NetworkManager 不存储连接或设置,它只是选择和激活这些连接的机制。
为了存储预定义的网络连接,两个独立的服务“系统设置服务”和“用户设置服务”存储连接信息,并通过 D-Bus 将这些信息提供给 NetworkManager。每个设置服务都可以确定其持久存储连接信息的方式和位置;例如,GNOME 小程序将其配置存储在 GConf 中,系统设置服务以发行版特定的格式或与发行版无关的格式存储其配置,具体取决于用户/管理员的偏好。