static int getAssignedAddress(struct sockaddr_in *sa) { if(sa == NULL) return -1; ACIpAddress addr; int result = ACGetAssignedAddress(&addr); if(result == 0) sa->sin_addr.s_addr = addr; return result; }
void InitSocketFunctionPointers(void) { unsigned int nsysnet_handle; unsigned int *funcPointer = 0; OSDynLoad_Acquire("nsysnet.rpl", &nsysnet_handle); unsigned int nn_ac_handle; int(*ACInitialize)(); int(*ACGetStartupId) (unsigned int *id); int(*ACConnectWithConfigId) (unsigned int id); int(*ACGetAssignedAddress) (u32 * ip); OSDynLoad_Acquire("nn_ac.rpl", &nn_ac_handle); OSDynLoad_FindExport(nn_ac_handle, 0, "ACInitialize", &ACInitialize); OSDynLoad_FindExport(nn_ac_handle, 0, "ACGetStartupId", &ACGetStartupId); OSDynLoad_FindExport(nn_ac_handle, 0, "ACConnectWithConfigId",&ACConnectWithConfigId); OSDynLoad_FindExport(nn_ac_handle, 0, "ACGetAssignedAddress",&ACGetAssignedAddress); OS_FIND_EXPORT(nsysnet_handle, socket_lib_init); OS_FIND_EXPORT(nsysnet_handle, socket_lib_finish); OS_FIND_EXPORT(nsysnet_handle, socket); OS_FIND_EXPORT(nsysnet_handle, socketclose); OS_FIND_EXPORT(nsysnet_handle, connect); OS_FIND_EXPORT(nsysnet_handle, bind); OS_FIND_EXPORT(nsysnet_handle, listen); OS_FIND_EXPORT(nsysnet_handle, accept); OS_FIND_EXPORT(nsysnet_handle, send); OS_FIND_EXPORT(nsysnet_handle, recv); OS_FIND_EXPORT(nsysnet_handle, sendto); OS_FIND_EXPORT(nsysnet_handle, setsockopt); OS_FIND_EXPORT(nsysnet_handle, inet_ntoa); OS_FIND_EXPORT(nsysnet_handle, inet_aton); unsigned int nn_startupid; ACInitialize(); ACGetStartupId(&nn_startupid); ACConnectWithConfigId(nn_startupid); ACGetAssignedAddress(&hostIpAddress); socket_lib_init(); }