X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Usermode%2FLibraries%2Flibnet.so_src%2Fmain.c;h=7f8d04827d55a791d8b635e28d3845be8e72275a;hb=78f865ea25a5f06b6b00ec1a3283335953925cb6;hp=938d1142320a8f9080953f068f584087a7628eb9;hpb=0c1bf884877e4b89eb224e91627508d42ca70974;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libnet.so_src/main.c b/Usermode/Libraries/libnet.so_src/main.c index 938d1142..7f8d0482 100644 --- a/Usermode/Libraries/libnet.so_src/main.c +++ b/Usermode/Libraries/libnet.so_src/main.c @@ -28,6 +28,32 @@ int Net_GetAddressSize(int AddressType) } } +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); + 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); + } +} + //TODO: Move out to another file char *Net_GetInterface(int AddressType, void *Address) {