Only in ipv6calc-0.45.lio/: config.cache Only in ipv6calc-0.45.lio/: config.h Only in ipv6calc-0.45.lio/: config.log Only in ipv6calc-0.45.lio/: config.status diff -u --recursive ipv6calc-0.45/contrib/ipv6calc.spec ipv6calc-0.45.lio/contrib/ipv6calc.spec --- ipv6calc-0.45/contrib/ipv6calc.spec 2002-11-12 20:17:58.000000000 +0100 +++ ipv6calc-0.45.lio/contrib/ipv6calc.spec 2003-04-03 22:26:58.000000000 +0200 @@ -1,6 +1,6 @@ # Project : ipv6calc # File : contrib/ipv6calc.spec -# Version : $Id: ipv6calc.spec,v 1.14 2002/11/12 19:17:58 peter Exp $ +# Version : $Id: ipv6calc.spec.in,v 1.18 2002/11/12 18:59:04 peter Exp $ # Copyright : 2001-2002 by Peter Bieringer Summary: IPv6 address format change and calculation utility diff -u --recursive ipv6calc-0.45/ipv6calc/ipv6calc.c ipv6calc-0.45.lio/ipv6calc/ipv6calc.c --- ipv6calc-0.45/ipv6calc/ipv6calc.c 2002-11-12 20:03:29.000000000 +0100 +++ ipv6calc-0.45.lio/ipv6calc/ipv6calc.c 2003-04-03 22:36:56.000000000 +0200 @@ -583,6 +583,12 @@ retval = librfc2874_bitstring_to_ipv6addrstruct(argv[0], &ipv6addr, resultstring); argc--; break; + + case FORMAT_octal_backslash: + if (argc < 1) { printhelp_missinginputdata(); exit(EXIT_FAILURE); }; + retval = octal_backslash_to_ipv6addrstruct(argv[0], resultstring, &ipv6addr); + argc--; + break; default: fprintf(stderr, " Input-type isn't implemented\n"); @@ -929,6 +935,11 @@ }; break; + case FORMAT_octal_backslash: + if (ipv6addr.flag_valid != 1) { fprintf(stderr, "No valid IPv6 address given!\n"); exit(EXIT_FAILURE); }; + retval = libipv6addr_ipv6addrstruct_to_octal_backslash(&ipv6addr, resultstring); + break; + case FORMAT_ipv4addr: if (ipv4addr.flag_valid != 1) { fprintf(stderr, "No valid IPv4 address given!\n"); exit(EXIT_FAILURE); }; retval = libipv4addr_ipv4addrstruct_to_string(&ipv4addr, resultstring, formatoptions); diff -u --recursive ipv6calc-0.45/ipv6calcweb/ipv6calcweb.cgi ipv6calc-0.45.lio/ipv6calcweb/ipv6calcweb.cgi --- ipv6calc-0.45/ipv6calcweb/ipv6calcweb.cgi 2002-11-04 21:38:37.000000000 +0100 +++ ipv6calc-0.45.lio/ipv6calcweb/ipv6calcweb.cgi 2003-04-03 22:37:02.000000000 +0200 @@ -28,7 +28,7 @@ # Program information my $program_name = "ipv6calcweb.cgi"; my $program_copyright = "(P) & (C) 2002 by Peter Bieringer"; -my $program_version = "0.44"; # automatic generated line, don't remove this token: @@VERSION@@ +my $program_version = "0.45"; # automatic generated line, don't remove this token: @@VERSION@@ # Debug value diff -u --recursive ipv6calc-0.45/lib/ipv6calctypes.h ipv6calc-0.45.lio/lib/ipv6calctypes.h --- ipv6calc-0.45/lib/ipv6calctypes.h 2002-04-21 13:24:08.000000000 +0200 +++ ipv6calc-0.45.lio/lib/ipv6calctypes.h 2003-04-03 22:41:04.000000000 +0200 @@ -47,6 +47,7 @@ #define FORMAT_NUM_any 16 #define FORMAT_NUM_prefix_mac 17 #define FORMAT_NUM_revipv4 18 +#define FORMAT_NUM_octal_backslash 19 #define FORMAT_NUM_undefined 31 #define FORMAT_auto (uint32_t) 0x00000u @@ -68,6 +69,7 @@ #define FORMAT_any (uint32_t) (1 << FORMAT_NUM_any) #define FORMAT_prefix_mac (uint32_t) (1 << FORMAT_NUM_prefix_mac) #define FORMAT_revipv4 (uint32_t) (1 << FORMAT_NUM_revipv4) +#define FORMAT_octal_backslash (uint32_t) (1 << FORMAT_NUM_octal_backslash) #define FORMAT_undefined (uint32_t) (1 << FORMAT_NUM_undefined) /* Primary label of format number, keeping also an explanation */ @@ -98,6 +100,7 @@ { FORMAT_any , "any" , "any type (currently not supported)", "" }, { FORMAT_revipv4 , "revipv4" , "reverse IPv4, ending with in-addr.arpa", "" }, { FORMAT_prefix_mac , "prefix+mac" , "IPv6 prefix and a MAC address", "" }, + { FORMAT_octal_backslash , "octal_backslash" , "IPv6 address, network byte order, in octal notation with \\-escaping", "" }, }; /* Format conversion matrix */ diff -u --recursive ipv6calc-0.45/lib/libipv6addr.c ipv6calc-0.45.lio/lib/libipv6addr.c --- ipv6calc-0.45/lib/libipv6addr.c 2002-11-04 20:49:45.000000000 +0100 +++ ipv6calc-0.45.lio/lib/libipv6addr.c 2003-04-03 22:32:30.000000000 +0200 @@ -649,6 +649,95 @@ }; #undef DEBUG_function_name +/* + * function stores an IPv6 address string into a structure + * + * in : *addrstring = IPv6 address + * out: *resultstring = error message + * out: ipv6addrp = changed IPv6 address structure + * ret: ==0: ok, !=0: error + */ +#define DEBUG_function_name "libipv6addr/octal_backslash_to_ipv6addrstruct" +int octal_backslash_to_ipv6addrstruct(const char *addrstring, char *resultstring, ipv6calc_ipv6addr *ipv6addrp) { + int retval = 1, result, i; + char tempstring[NI_MAXHOST]; + int expecteditems = 0; + int temp[16]; + uint32_t scope = 0; + + resultstring[0] = '\0'; /* clear result string */ + + if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { + fprintf(stderr, "%s: Got input: %s\n", DEBUG_function_name, addrstring); + }; + + if (strlen(addrstring) > sizeof(tempstring) - 1) { + fprintf(stderr, "Input too long: %s\n", addrstring); + return (1); + }; + + snprintf(tempstring, sizeof(tempstring), "%s", addrstring); + + ipv6addr_clearall(ipv6addrp); + + /* save prefix length first, if available */ + ipv6addrp->flag_prefixuse = 0; /* reset flag first */ + + ipv6addr_clear(ipv6addrp); + + expecteditems = 16; + result = sscanf(tempstring, "\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o", &temp[0], &temp[1], &temp[2], &temp[3], &temp[4], &temp[5], &temp[6], &temp[7], &temp[8], &temp[9], &temp[10], &temp[11], &temp[12], &temp[13], &temp[14], &temp[15]); + + if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { + fprintf(stderr, "%s: reading into array, got items: %d\n", DEBUG_function_name, result); + }; + + if ( result != expecteditems ) { + snprintf(resultstring, NI_MAXHOST, "Error splitting address %s, got %d items instead of %d!", addrstring, result, expecteditems); + retval = 1; + return (retval); + }; + + /* check address words range */ + for ( i = 0; i < 16; i++ ) { + if ( (temp[i] < 0) || (temp[i] > 0xff) ) { + snprintf(resultstring, NI_MAXHOST, "Error, given address '%s' is not valid on position %d (%x)!", addrstring, i, temp[i]); + retval = 1; + return (retval); + }; + }; + + /* copy into structure */ + for ( i = 0; i < 16; i++ ) { + if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { + fprintf(stderr, "%s: Push octet %u: %04x\n", DEBUG_function_name, (unsigned int) i, (unsigned int) temp[i]); + }; + ipv6addr_setoctett(ipv6addrp, (unsigned int) i, (unsigned int) temp[i]); + }; + + if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { + fprintf(stderr, "%s: In structure %08x %08x %08x %08x\n", DEBUG_function_name, (unsigned int) ipv6addr_getdword(ipv6addrp, 0), (unsigned int) ipv6addr_getdword(ipv6addrp, 1), (unsigned int) ipv6addr_getdword(ipv6addrp, 2), (unsigned int) ipv6addr_getdword(ipv6addrp, 3)); + fprintf(stderr, "%s: In structure %04x %04x %04x %04x %04x %04x %04x %04x\n", DEBUG_function_name, (unsigned int) ipv6addr_getword(ipv6addrp, 0), (unsigned int) ipv6addr_getword(ipv6addrp, 1), (unsigned int) ipv6addr_getword(ipv6addrp, 2), (unsigned int) ipv6addr_getword(ipv6addrp, 3), (unsigned int) ipv6addr_getword(ipv6addrp, 4), (unsigned int) ipv6addr_getword(ipv6addrp, 5), (unsigned int) ipv6addr_getword(ipv6addrp, 6), (unsigned int) ipv6addr_getword(ipv6addrp, 7)); + }; + + scope = ipv6addr_gettype(ipv6addrp); + + if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { + fprintf(stderr, "%s: Got scope %08x\n", DEBUG_function_name, (unsigned int) scope); + }; + + ipv6addrp->scope = scope; + + if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { + fprintf(stderr, "%s: First word is: %04x, address info value: %08x\n", DEBUG_function_name, (unsigned int) ipv6addr_getword(ipv6addrp, 0), (unsigned int) scope); + fprintf(stderr, "%s: flag_prefixuse %d\n", DEBUG_function_name, ipv6addrp->flag_prefixuse); + }; + + ipv6addrp->flag_valid = 1; + retval = 0; + return (retval); +}; +#undef DEBUG_function_name /* * stores the ipv6addr structure in an uncompressed IPv6 format string @@ -847,6 +936,22 @@ }; #undef DEBUG_function_name +#define DEBUG_function_name "libipv6addr/ipv6addrstruct_to_octal_backslash" +int libipv6addr_ipv6addrstruct_to_octal_backslash(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring) { + + char tempstring[NI_MAXHOST]; + + snprintf(tempstring, sizeof(tempstring), "\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o\\%o", (unsigned int) ipv6addrp->in6_addr.s6_addr[0],(unsigned int) ipv6addrp->in6_addr.s6_addr[1],(unsigned int) ipv6addrp->in6_addr.s6_addr[2],(unsigned int) ipv6addrp->in6_addr.s6_addr[3],(unsigned int) ipv6addrp->in6_addr.s6_addr[4],(unsigned int) ipv6addrp->in6_addr.s6_addr[5],(unsigned int) ipv6addrp->in6_addr.s6_addr[6],(unsigned int) ipv6addrp->in6_addr.s6_addr[7],(unsigned int) ipv6addrp->in6_addr.s6_addr[8],(unsigned int) ipv6addrp->in6_addr.s6_addr[9],(unsigned int) ipv6addrp->in6_addr.s6_addr[10], (unsigned int) ipv6addrp->in6_addr.s6_addr[11],(unsigned int) ipv6addrp->in6_addr.s6_addr[12], (unsigned int) ipv6addrp->in6_addr.s6_addr[13], (unsigned int) ipv6addrp->in6_addr.s6_addr[14], (unsigned int) ipv6addrp->in6_addr.s6_addr[15]); + + snprintf(resultstring, NI_MAXHOST, "%s", tempstring); + + if ( (ipv6calc_debug & DEBUG_libipv6addr) != 0 ) { + fprintf(stderr, "%s: result string: %s\n", DEBUG_function_name, resultstring); + }; + + return 0; +}; +#undef DEBUG_function_name /* * mask prefix bits (set suffix bits to 0) diff -u --recursive ipv6calc-0.45/lib/libipv6addr.h ipv6calc-0.45.lio/lib/libipv6addr.h --- ipv6calc-0.45/lib/libipv6addr.h 2002-09-04 08:34:51.000000000 +0200 +++ ipv6calc-0.45.lio/lib/libipv6addr.h 2003-04-03 22:25:40.000000000 +0200 @@ -140,9 +140,11 @@ extern int libipv6addr_get_registry_string(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring); extern int addr_to_ipv6addrstruct(const char *addrstring, char *resultstring, ipv6calc_ipv6addr *ipv6addrp); +extern int octal_backslash_to_ipv6addrstruct(const char *addrstring, char *resultstring, ipv6calc_ipv6addr *ipv6addrp); extern int libipv6addr_ipv6addrstruct_to_uncompaddr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring, const uint32_t formatoptions); +extern int libipv6addr_ipv6addrstruct_to_octal_backslash(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring); /* extern int ipv6addrstruct_to_fulluncompaddr(const ipv6calc_ipv6addr *ipv6addrp, char *resultstring);*/ /* going obsolete */ Only in ipv6calc-0.45.lio/: Makefile Only in ipv6calc-0.45.lio/: version.h