X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FIPStack%2Fmain.c;h=ef1a2cd84df09ec7afb949322d961f2f4f6cb8d6;hb=41769c02317835472d7678d3531ecfc23df8e17a;hp=585f8c3e207f9726ab07529f3fb14cf8e471633b;hpb=94ecc5441605ad5151e625457531e7f90470db31;p=tpg%2Facess2.git diff --git a/Modules/IPStack/main.c b/Modules/IPStack/main.c index 585f8c3e..ef1a2cd8 100644 --- a/Modules/IPStack/main.c +++ b/Modules/IPStack/main.c @@ -71,10 +71,15 @@ int IPStack_Install(char **Arguments) // - is a condensed hexadecimal stream (in big endian) // (E.g. 0A000201 for 10.0.2.1 IPv4) // - is the number of subnet bits (E.g. 24 for an IPv4 Class C) + // Example: /Devices/ne2k/0,4,0A00020A,24 + + // I could also define routes using ,,, + // Example: 1,00000000,0,0A000201 } } - gIP_LoopInterface.Adapter = IPStack_GetAdapter("/Devices/fifo/anon"); + // Initialise loopback interface + gIP_LoopInterface.Adapter = IPStack_GetAdapter("LOOPBACK"); DevFS_AddDevice( &gIP_DriverInfo ); @@ -117,6 +122,8 @@ int IPStack_CompareAddress(int AddressType, void *Address1, void *Address2, int if( CheckBits < 0 ) CheckBits = 0; if( CheckBits > size*8 ) CheckBits = size*8; + if( CheckBits == 0 ) return 1; // /0 matches anythin + // Check first bits/8 bytes if( memcmp(Address1, Address2, CheckBits/8) != 0 ) return 0; @@ -130,3 +137,29 @@ int IPStack_CompareAddress(int AddressType, void *Address1, void *Address2, int return 0; } + +const char *IPStack_PrintAddress(int AddressType, void *Address) +{ + switch( AddressType ) + { + case 4: { + static char ret[4*3+3+1]; + Uint8 *addr = Address; + sprintf(ret, "%i.%i.%i.%i", addr[0], addr[1], addr[2], addr[3]); + return ret; + } + + case 6: { + static char ret[8*4+7+1]; + Uint16 *addr = Address; + sprintf(ret, "%x:%x:%x:%x:%x:%x:%x:%x", + addr[0], addr[1], addr[2], addr[3], + addr[4], addr[5], addr[6], addr[7] + ); + return ret; + } + + default: + return ""; + } +}