@@ -569,8 +569,10 @@ unsigned default_ipv4_prefix(struct in_addr net)
569
569
#define FLAG_SHOW_GEOIP ((1<<15)|FLAG_GET_GEOIP)
570
570
#define FLAG_SHOW_ALL_INFO ((1<<16)|FLAG_SHOW_INFO)
571
571
#define FLAG_SHOW_REVERSE (1<<17)
572
+ #define FLAG_ASSUME_CLASS_PREFIX (1<<18)
572
573
573
- #define FLAGS_TO_IGNORE (FLAG_GET_GEOIP|(1<<16))
574
+ /* Flags that are not real options */
575
+ #define FLAGS_TO_IGNORE (FLAG_GET_GEOIP|FLAG_ASSUME_CLASS_PREFIX|(1<<16))
574
576
#define FLAGS_TO_IGNORE_MASK (~FLAGS_TO_IGNORE)
575
577
576
578
int get_ipv4_info (const char * ipStr , int prefix , ip_info_st * info ,
@@ -613,8 +615,11 @@ int get_ipv4_info(const char *ipStr, int prefix, ip_info_st * info,
613
615
}
614
616
ipStr = tmp ;
615
617
}
616
- } else { /* assume good old days classful Internet */
617
- prefix = default_ipv4_prefix (ip );
618
+ } else { /* assume good old days classful Internet */
619
+ if (flags & FLAG_ASSUME_CLASS_PREFIX )
620
+ prefix = default_ipv4_prefix (ip );
621
+ else
622
+ prefix = 32 ;
618
623
}
619
624
620
625
if (prefix > 32 ) {
@@ -1033,6 +1038,8 @@ int str_to_prefix(int *ipv6, const char *prefixStr, unsigned fix)
1033
1038
#define OPT_ADDRSPACE 5
1034
1039
#define OPT_USAGE 6
1035
1040
#define OPT_REVERSE 7
1041
+ #define OPT_CLASS_PREFIX 8
1042
+
1036
1043
static const struct option long_options [] = {
1037
1044
{"check" , 0 , 0 , 'c' },
1038
1045
{"random-private" , 1 , 0 , 'r' },
@@ -1050,6 +1057,7 @@ static const struct option long_options[] = {
1050
1057
{"netmask" , 0 , 0 , 'm' },
1051
1058
{"network" , 0 , 0 , 'n' },
1052
1059
{"prefix" , 0 , 0 , 'p' },
1060
+ {"class-prefix" , 0 , 0 , OPT_CLASS_PREFIX },
1053
1061
{"minaddr" , 0 , 0 , OPT_MINADDR },
1054
1062
{"maxaddr" , 0 , 0 , OPT_MAXADDR },
1055
1063
{"addresses" , 0 , 0 , OPT_ADDRESSES },
@@ -1095,6 +1103,8 @@ void usage(unsigned verbose)
1095
1103
#endif
1096
1104
fprintf (stderr , "\n" );
1097
1105
fprintf (stderr , "Other options:\n" );
1106
+ fprintf (stderr , " --class-prefix When specified the default prefix will be determined\n" );
1107
+ fprintf (stderr , " by the IPv4 address class\n" );
1098
1108
fprintf (stderr , " -s, --silent Don't ever display error messages\n" );
1099
1109
fprintf (stderr , " -v, --version Display program version\n" );
1100
1110
fprintf (stderr , " -?, --help Show this help message\n" );
@@ -1105,7 +1115,7 @@ void usage(unsigned verbose)
1105
1115
fprintf (stderr , " [-h|--hostname] [-o|--lookup-host=STRING] [-g|--geoinfo]\n" );
1106
1116
fprintf (stderr , " [-m|--netmask] [-n|--network] [-p|--prefix] [--minaddr] [--maxaddr]\n" );
1107
1117
fprintf (stderr , " [--addresses] [--addrspace] [-s|--silent] [-v|--version]\n" );
1108
- fprintf (stderr , " [--reverse-dns]\n" );
1118
+ fprintf (stderr , " [--reverse-dns] [--class-prefix] \n" );
1109
1119
fprintf (stderr , " [-?|--help] [--usage]\n" );
1110
1120
}
1111
1121
}
@@ -1186,6 +1196,9 @@ int main(int argc, char **argv)
1186
1196
case OPT_ALLINFO :
1187
1197
flags |= FLAG_SHOW_ALL_INFO ;
1188
1198
break ;
1199
+ case OPT_CLASS_PREFIX :
1200
+ flags |= FLAG_ASSUME_CLASS_PREFIX ;
1201
+ break ;
1189
1202
case OPT_REVERSE :
1190
1203
flags |= FLAG_SHOW_REVERSE ;
1191
1204
break ;
@@ -1449,9 +1462,9 @@ int main(int argc, char **argv)
1449
1462
default_printf ("Hosts/Net:\t" , "%s\n" , info .hosts );
1450
1463
} else {
1451
1464
if (info .type )
1452
- default_printf ("Address space:\t" , "%s\n" , info .type );
1465
+ dist_printf ("Address space:\t" , "%s\n" , info .type );
1453
1466
if (info .class )
1454
- default_printf ("Address class:\t" , "%s\n" , info .class );
1467
+ dist_printf ("Address class:\t" , "%s\n" , info .class );
1455
1468
1456
1469
}
1457
1470
0 commit comments