/dev/net/ifmgr/ncl
/dev/net/ifmgr/ncl is the IOSU device node that handles network configuration. Its functions are exposed to the Cafe OS userspace through nsysnet.rpl's netconf functions.
ioctl() interface
0x0C - netconf_get_wifi_cfg()
This function is used to get the configuration information of the active wifi profile. It takes no input, and stores its output in a wifi configuration buffer.
0x11 - netconf_set_wifi_cfg()
This function is used to set the configuration information of the active wifi profile. It takes a wifi configuration buffer as input, and produces no output.
0x25 - netconf_set_proxy_cfg()
This function is used to set the configuration information for the proxy of the active wifi profile. It takes a proxy configuration buffer as input, and produces no output.
0x26 - netconf_get_proxy_cfg()
This function is used to get the configuration information for the proxy of the active wifi profile. It takes no input, and stores its output in a proxy configuration buffer.
Structures
Wifi Configuration
/* Wifi configuration */
typedef struct WifiConfig
{
char unk0[0x4-0x0];
char ssid[0x20];
uint16_t ssid_len;
char unk26[0x2c-0x26];
uint16_t key_len;
char key[0x40];
char unk6e[0x70-0x6e];
} WifiConfig;
#define WIFI_CFG_SIZE 0x70
Proxy Configuration
/* Proxy configuration */
typedef struct ProxyConfig
{
uint16_t using_proxy; // 0x0000 or 0x0001
uint16_t port;
int using_auth; // not sure about that
char ip[0x80];
char username[0x80];
char password[0x80];
char unknown[0x40];
} ProxyConfig;
#define PROXY_CFG_SIZE 0x1c8
Implementation Example
WiFi
#define NET_GET_WIFI_CFG 0x0C
#define NET_SET_WIFI_CFG 0x11
#define NET_GET_PROXY_CFG 0x26
#define NET_SET_PROXY_CFG 0x25
int fd;
WifiConfig *wf_cfg;
int handle = IOS_Open((char*)"/dev/net/ifmgr/ncl", 0);
if(!handle)
{
_print("Couldn't open IOSU module. Press + to exit.");
flipBuffers();
goto end;
}
wf_cfg = (WifiConfig*)OSAllocFromSystem(0x70, 4);
if(!wf_cfg)
{
_print("Couldn't alloc output buffer. Press + to exit");
flipBuffers();
goto end;
}
memset(wf_cfg, 0, 0x70);
IOS_Ioctl(handle, NET_GET_WIFI_CFG, NULL, 0, wf_cfg, 0x70);
fd = open("sd:/wifi_cfg.bin", O_WRONLY);
write(fd, wf_cfg, 0x70);
close(fd);
_print("File written to SD Card ! Press + to exit");
flipBuffers();
end: