ifconfig - routes
[tpg/acess2.git] / Usermode / Libraries / libnet.so_src / address.c
index 2b58444..31b23e5 100644 (file)
@@ -7,8 +7,11 @@
  */
 #include <net.h>
 #include <stdint.h>
+#include <stdio.h>
 #define DEBUG  0
 
+#define __thread               // Disable TLS
+
 /**
  * \brief Read an IPv4 Address
  * \param String       IPv4 dotted decimal address
@@ -166,3 +169,48 @@ int Net_ParseAddress(const char *String, void *Addr)
        
        return 0;
 }
+
+static const char *Net_PrintIPv4Address(uint8_t *Address)
+{
+       static __thread char    ret[4*3+3+1];   // '255.255.255.255\0'
+       
+       sprintf(ret, "%i.%i.%i.%i", Address[0], Address[1], Address[2], Address[3]);
+       
+       return ret;
+}
+
+static const char *Net_PrintIPv6Address(uint16_t *Address)
+{
+       static __thread char    ret[8*4+7+1];   // 'FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF\0'
+       #if 0
+       // TODO: Zero compression
+        int    zeroStart = 0, zeroEnd = 8;
+       for( i = 0; i < 8; i ++ ) {
+               if( 
+       }
+       #endif
+       
+       sprintf(ret, "%x:%x:%x:%x:%x:%x:%x:%x",
+               Address[0], Address[1], Address[2], Address[3],
+               Address[4], Address[5], Address[6], Address[7]
+               );
+       
+       return ret;
+}
+
+const char *Net_PrintAddress(int AddressType, void *Address)
+{
+       switch( AddressType )
+       {
+       case 0: return "";
+       
+       case 4:
+               return Net_PrintIPv4Address(Address);
+       
+       case 6:
+               return Net_PrintIPv6Address(Address);
+               
+       default:
+               return "BAD";
+       }
+}

UCC git Repository :: git.ucc.asn.au