/*---------------------------------------------------------------------------* Project: Horizon File: nsoc_admin.h Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Rev:$ *--------------------------------------------------------------------------- */ /* Please see man pages for details */ #ifndef NSOC_ADMIN_H #define NSOC_ADMIN_H #ifndef NSOC_NO_DEPEND_HEADER #include /* for NOSxxxx */ #include /* for NNETxxxx */ #include /* for NSOCInAddr, NSOCDNSServerInfo */ #endif #ifdef __cplusplus extern "C" { #endif /*---------------------------------------------------------------------------* * Definitions *---------------------------------------------------------------------------*/ #define NSOC_VENDOR_NINTENDO 0x0000 /* Please see man pages for details */ #define NSOC_COMMON_CONF_VERSION 0x3100 /* Please see man pages for details */ #define NSOC_INS_CONF_VERSION 0x4100 /* Please see man pages for details */ /* Please see man pages for details */ #define NSOC_ERROR_BASE 0xffff8000 #define NSOC_ERROR_CODE(code) ((s32)(NSOC_ERROR_BASE|(code))) enum NSOCErrorCode { NSOC_ERR_PARAM = NSOC_ERROR_CODE(1), /* Please see man pages for details */ NSOC_ERR_INIT = NSOC_ERROR_CODE(2), /* Please see man pages for details */ NSOC_ERR_FINISH = NSOC_ERROR_CODE(3), /* Please see man pages for details */ NSOC_ERR_CONFVER = NSOC_ERROR_CODE(4), /* Please see man pages for details */ NSOC_ERR_STATE = NSOC_ERROR_CODE(5), /* Please see man pages for details */ NSOC_ERR_EXIST = NSOC_ERROR_CODE(6), /* Please see man pages for details */ NSOC_ERR_NOMEM = NSOC_ERROR_CODE(7), /* Please see man pages for details */ NSOC_ERR_NOS = NSOC_ERROR_CODE(8), /* Please see man pages for details */ NSOC_ERR_LOWER = NSOC_ERROR_CODE(9), /* Please see man pages for details */ NSOC_ERR_TIMEOUT = NSOC_ERROR_CODE(10), /* Please see man pages for details */ NSOC_ERR_INS_RESOURCES = NSOC_ERROR_CODE(11), /* Please see man pages for details */ NSOC_ERR_MAXSOCKET = NSOC_ERROR_CODE(12), /* Please see man pages for details */ NSOC_ERR_ABORT = NSOC_ERROR_CODE(13), /* Please see man pages for details */ NSOC_ERR_IP_UNREACHABLE = NSOC_ERROR_CODE(21), /* Please see man pages for details */ NSOC_ERR_IP_DATASIZE = NSOC_ERROR_CODE(22), /* Please see man pages for details */ NSOC_ERR_IP_NETDOWN = NSOC_ERROR_CODE(23), /* Please see man pages for details */ NSOC_ERR_IP_INVALID = NSOC_ERROR_CODE(24), /* Please see man pages for details */ NSOC_ERR_IP_REFUSED = NSOC_ERROR_CODE(25), /* Please see man pages for details */ NSOC_ERR_IP_TIMEOUT = NSOC_ERROR_CODE(26), /* Please see man pages for details */ NSOC_ERR_IP_CANCELED = NSOC_ERROR_CODE(27), /* Please see man pages for details */ NSOC_ERR_IP_BUSY = NSOC_ERROR_CODE(28), /* Please see man pages for details */ NSOC_ERR_IP_CLOSING = NSOC_ERROR_CODE(29), /* Please see man pages for details */ NSOC_ERR_IP_EXIST = NSOC_ERROR_CODE(30), /* Please see man pages for details */ NSOC_ERR_IP_RESET = NSOC_ERROR_CODE(31), /* Please see man pages for details */ NSOC_ERR_IP_NOT_EXIST = NSOC_ERROR_CODE(32), /* Please see man pages for details */ NSOC_ERR_IP_INV_SOCKET = NSOC_ERROR_CODE(33), /* Please see man pages for details */ NSOC_ERR_IP_AGAIN = NSOC_ERROR_CODE(34), /* Please see man pages for details */ NSOC_ERR_IP_SOCKET_UNSPECIFIED = NSOC_ERROR_CODE(35), /* Please see man pages for details */ NSOC_ERR_IP_SOURCE_QUENCH = NSOC_ERROR_CODE(36), /* Please see man pages for details */ NSOC_ERR_IP_INV_OPTION = NSOC_ERROR_CODE(37), /* Please see man pages for details */ NSOC_ERR_IP_ADDR_COLLISION = NSOC_ERROR_CODE(38), /* Please see man pages for details */ NSOC_ERR_IP_SHUTDOWN = NSOC_ERROR_CODE(39), /* Please see man pages for details */ NSOC_ERR_IP_INV_HEADER = NSOC_ERROR_CODE(40), /* Please see man pages for details */ NSOC_ERR_IP_INV_ADDR = NSOC_ERROR_CODE(41), /* Please see man pages for details */ NSOC_ERR_IP_INV_DATA = NSOC_ERROR_CODE(42), /* Please see man pages for details */ NSOC_ERR_DHCP_EXPIRED = NSOC_ERROR_CODE(51), /* Please see man pages for details */ NSOC_ERR_DHCP_TIMEOUT = NSOC_ERROR_CODE(52), /* Please see man pages for details */ NSOC_ERR_DHCP_NAK = NSOC_ERROR_CODE(53), /* Please see man pages for details */ NSOC_ERR_IP6_ADDR_COLLISION = NSOC_ERROR_CODE(60), /* Please see man pages for details */ NSOC_ERR_NONE = 0 /* Please see man pages for details */ }; /*---------------------------------------------------------------------------* * Types/Declarations *---------------------------------------------------------------------------*/ /* Please see man pages for details */ typedef struct NSOCCommonConfig { u16 vendor; /* Please see man pages for details */ u16 version; /* Please see man pages for details */ s32 timeWaitBuffer; /* Please see man pages for details */ s32 reassembleMtu; /* Please see man pages for details */ // TCP s32 rwin; /* Please see man pages for details */ s32 r2; /* Please see man pages for details */ // UDP s32 udpRecvBuff; /* Please see man pages for details */ // DHCP const char* hostName; /* Please see man pages for details */ s32 rdhcp; /* Please see man pages for details */ } NSOCCommonConfig; /* * Flag that sets NSOCInstanceConfig flag */ enum NSOCInstanceConfigFlag { NSOC_FLAG_DHCP = 0x0001, /* Please see man pages for details */ NSOC_FLAG_PPP = 0x0002, /* Please see man pages for details */ NSOC_FLAG_IP4 = 0x0004, /* Please see man pages for details */ NSOC_FLAG_IP6 = 0x0008, /* Please see man pages for details */ NSOC_FLAG_DHCP6 = 0x0010, /* Please see man pages for details */ NSOC_FLAG_NORA_DHCP6 = 0x0020, /* Please see man pages for details */ NSOC_FLAG_DHCP_REBOOT = 0x0100, /* Please see man pages for details */ NSOC_FLAG_DHCP_RELEASE = 0x0200, /* Please see man pages for details */ NSOC_FLAG_DNS_AUTO = 0x1000, /* Please see man pages for details */ NSOC_FLAG_ZEROCONF = 0x8000 /* Please see man pages for details */ }; /* Please see man pages for details */ typedef struct NSOCInstanceConfig { u16 vendor; /* Please see man pages for details */ u16 version; /* Please see man pages for details */ u32 flag; /* Please see man pages for details */ NSOCInAddr addr; /* Please see man pages for details */ NSOCInAddr netmask; /* Please see man pages for details */ NSOCInAddr router; /* Please see man pages for details */ s32 mtu; /* Please see man pages for details */ NSOCDNSServerInfo dnsserver; /* Please see man pages for details */ #ifdef NSOC_IP6_ENABLE u8 curHopLimit; /* Hop limit */ u32 retransTimer; /* NS retransmission interval (msec) */ u32 dadNSTransmits; /* Number of NS transmissions for duplicate address detection */ u8 interfaceId[8]; /* Interface ID */ #endif /* NSOC_IP6_ENABLE */ } NSOCInstanceConfig; /* Please see man pages for details */ typedef void (* NSOCConfigErrorCallback )(NSOCInstancePtr insP, s32 err); #ifndef NSOC_NO_DEPEND_HEADER /* Please see man pages for details */ typedef BOOL (* NSOCFilter)(NSOCInstancePtr insP, NOSMessageBuf *mbuf); #endif /* Please see man pages for details */ NN_INLINE NNETInstance *NSOC_GetNNETInstance(NSOCInstancePtr insP) { return (NNETInstance *)insP; } /* Please see man pages for details */ NN_INLINE NSOCInstancePtr NSOC_GetNSOCInstance(NNETInstance *ins) { return (NSOCInstancePtr)ins; } /*---------------------------------------------------------------------------* * Function Prototypes *---------------------------------------------------------------------------*/ /* nsoc_main.c */ extern s32 NSOC_Init(const NNETAllocator *allocator); extern s32 NSOC_Finish(void); extern s32 NSOC_SetCommonConfig(const NSOCCommonConfig *common_conf); extern s32 NSOC_SetInstanceConfig(NSOCInstancePtr ins, const NSOCInstanceConfig *ins_conf); extern s32 NSOC_StartupIns(NNETInstance *ins, s32 timeout); extern s32 NSOC_CleanupIns(NNETInstance *ins, s32 timeout); extern s32 NSOC_AbortIns(NNETInstance *ins); extern s32 NSOC_CreateIns(NSOCInstancePtr *insP); extern s32 NSOC_DestroyIns(NSOCInstancePtr insP); extern s32 NSOC_AttachIF(NSOCInstancePtr insP, NNETEthernetAPI *low_api); extern s32 NSOC_DetachIF(NSOCInstancePtr insP); extern s32 NSOC_SetConfigErrorCallback(NSOCInstancePtr nsoc_insP, NSOCConfigErrorCallback callback); extern s32 NSOC_SetUserInsParam(NSOCInstancePtr insP, void* param); extern s32 NSOC_GetUserInsParam(NSOCInstancePtr insP, void** param); /* nsoc_socket.c */ extern int NSOC_GetUserInfo(int s, void** userInfo); extern void NSOC_FreeUserInfo(void* userInfo); extern void* NSOC_DuplicateUserInfo(void* userInfo, int socket); #ifdef __cplusplus } #endif /* NSOC_ADMIN_H */ #endif