mirror of
https://github.com/RKX1209/nsemu.git
synced 2024-06-15 10:47:28 -04:00
77 lines
1.7 KiB
C
77 lines
1.7 KiB
C
|
#include<libtransistor/nx.h>
|
||
|
|
||
|
#include<sys/socket.h>
|
||
|
|
||
|
void dumpsockaddrin(struct sockaddr_in *sin) {
|
||
|
dbg_printf("sin_family: %d", sin->sin_family);
|
||
|
dbg_printf("sin_port: %d", ntohs(sin->sin_port));
|
||
|
uint32_t addr = sin->sin_addr.s_addr;
|
||
|
uint8_t *bytes = (uint8_t*) &addr;
|
||
|
dbg_printf("sin_addr: %d.%d.%d.%d", bytes[0], bytes[1], bytes[2], bytes[3]);
|
||
|
}
|
||
|
|
||
|
void dumpaddrinfo(struct addrinfo *ai) {
|
||
|
dbg_printf("ai_flags: %d", ai->ai_flags);
|
||
|
dbg_printf("ai_family: %d", ai->ai_family);
|
||
|
dbg_printf("ai_socktype: %d", ai->ai_socktype);
|
||
|
dbg_printf("ai_protocol: %d", ai->ai_protocol);
|
||
|
dbg_printf("ai_addrlen: %d", ai->ai_addrlen);
|
||
|
if(ai->ai_family == AF_INET) {
|
||
|
dumpsockaddrin((struct sockaddr_in*) ai->ai_addr);
|
||
|
}
|
||
|
if(ai->ai_canonname) {
|
||
|
dbg_printf("ai_canonname: \"%s\"", ai->ai_canonname);
|
||
|
} else {
|
||
|
dbg_printf("ai_canonname: NULL");
|
||
|
}
|
||
|
if(ai->ai_next) {
|
||
|
dbg_printf("ai_next:");
|
||
|
dumpaddrinfo(ai->ai_next);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int main() {
|
||
|
svcSleepThread(100000000);
|
||
|
|
||
|
result_t r;
|
||
|
if((r = sm_init()) != RESULT_OK) {
|
||
|
dbg_printf("failed to init sm: 0x%x", r);
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
if((r = bsd_init()) != RESULT_OK) {
|
||
|
dbg_printf("failed to init bsd: 0x%x, %d", r, bsd_errno);
|
||
|
goto err_only_sm;
|
||
|
}
|
||
|
|
||
|
struct addrinfo *ai = NULL;
|
||
|
|
||
|
struct addrinfo hints;
|
||
|
hints.ai_family = AF_INET;
|
||
|
hints.ai_socktype = SOCK_STREAM;
|
||
|
|
||
|
int e = bsd_getaddrinfo("conntest.nintendowifi.net", "6767", &hints, &ai);
|
||
|
if(e) {
|
||
|
dbg_printf("failed to getaddrinfo: %d, 0x%x", e, bsd_result);
|
||
|
goto err;
|
||
|
}
|
||
|
|
||
|
if(ai == NULL) {
|
||
|
dbg_printf("addrinfo is null?");
|
||
|
goto err;
|
||
|
}
|
||
|
|
||
|
dumpaddrinfo(ai);
|
||
|
|
||
|
bsd_finalize();
|
||
|
sm_finalize();
|
||
|
return 0;
|
||
|
|
||
|
err:
|
||
|
bsd_finalize();
|
||
|
err_only_sm:
|
||
|
sm_finalize();
|
||
|
return 1;
|
||
|
|
||
|
}
|