X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=inline;f=Usermode%2FLibraries%2Flibnet.so_src%2Fsocket.c;fp=Usermode%2FLibraries%2Flibnet.so_src%2Fsocket.c;h=0b54079329a1759d6412323d4d4c6269b4c181a8;hb=58cb682ba1001ea6146bdc6b2bfa9961d470bf52;hp=0000000000000000000000000000000000000000;hpb=be1f5320115622b322cb49b2780b6cc21b271eda;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libnet.so_src/socket.c b/Usermode/Libraries/libnet.so_src/socket.c new file mode 100644 index 00000000..0b540793 --- /dev/null +++ b/Usermode/Libraries/libnet.so_src/socket.c @@ -0,0 +1,50 @@ +/* + * Acess2 Networking Toolkit + * By John Hodge (thePowersGang) + * + * socket.c + * - + */ +#include +#include +#include +#include + +int Net_OpenSocket(int AddrType, void *Addr, const char *Filename) +{ + int addrLen = Net_GetAddressSize(AddrType); + int i; + uint8_t *addrBuffer = Addr; + char hexAddr[addrLen*2+1]; + + for( i = 0; i < addrLen; i ++ ) + sprintf(hexAddr+i*2, "%02x", addrBuffer[i]); + + if(Filename) + { + int len = snprintf(NULL, 100, "/Devices/ip/routes/@%i:%s/%s", AddrType, hexAddr, Filename); + char path[len+1]; + snprintf(path, 100, "/Devices/ip/routes/@%i:%s/%s", AddrType, hexAddr, Filename); + _SysDebug("%s", path); + return open(path, OPENFLAG_READ|OPENFLAG_WRITE); + } + else + { + int len = snprintf(NULL, 100, "/Devices/ip/routes/@%i:%s", AddrType, hexAddr); + char path[len+1]; + snprintf(path, 100, "/Devices/ip/routes/@%i:%s", AddrType, hexAddr); + return open(path, OPENFLAG_READ); + } +} + +int Net_OpenSocket_TCPC(int AddrType, void *Addr, int Port) +{ + int fd = Net_OpenSocket(AddrType, Addr, "tcpc"); + if( fd == -1 ) return -1; + + ioctl(fd, 5, &Port); // Remote Port + ioctl(fd, 6, Addr); // Remote address + ioctl(fd, 7, NULL); // connect + return fd; +} +