}
}
+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)
{
#ifndef __LIBNET_H_
#define __LIBNET_H_
+enum {
+ NET_ADDRTYPE_NULL = 0,
+ NET_ADDRTYPE_IPV4 = 4,
+ NET_ADDRTYPE_IPV6 = 6
+};
+
/**
* \brief Parse a string as an IP Address
* \param String Input string
*/
extern char *Net_GetInterface(int AddrType, void *Addr);
+/**
+ * \brief Open a network socket file
+ * \param AddrType Address family
+ * \param Addr Binary address
+ * \param SocketName Socket type to open (e.g. tcpc for TCP client)
+ * If NULL, the node directory is opened
+ * \return Socket file descriptor (as returned by \a open), or -1 on error
+ *
+ * Opens a file using /Devices/ip/routes/<AddrType>:<Addr>/<SocketName>
+ *
+ */
+extern int Net_OpenSocket(int AddrType, void *Addr, const char *SocketName);
+
#endif