@@ -13,28 +13,34 @@ namespace System.Net;
1313/// </summary>
1414public static class Program
1515{
16- private static readonly Dictionary < int , ArgParsed > Args = new ( ) ;
16+ private const string GroupPrint = "Print options" ;
17+ private const string GroupOutput = "Output options" ;
18+ private const string GroupParse = "Parse options" ;
19+ private const string GroupActions = "Actions" ;
20+ private const string ArgNameNetwork = "network" ;
21+
22+ private static readonly Dictionary < int , ArgParsed > Args = [ ] ;
1723
1824 private static readonly ArgParsed [ ] ArgsList =
1925 [
2026 // Print options
21- new ArgParsed ( 'i' , "Print options" , "network" , ( ac , _ ) => { ac . IPNetwork = true ; } ) ,
22- new ArgParsed ( 'n' , "Print options" , "network address" , ( ac , _ ) => { ac . Network = true ; } ) ,
23- new ArgParsed ( 'm' , "Print options" , "netmask" , ( ac , _ ) => { ac . Netmask = true ; } ) ,
24- new ArgParsed ( 'c' , "Print options" , "cidr" , ( ac , _ ) => { ac . Cidr = true ; } ) ,
25- new ArgParsed ( 'b' , "Print options" , "broadcast" , ( ac , _ ) => { ac . Broadcast = true ; } ) ,
26- new ArgParsed ( 'f' , "Print options" , "first usable ip address" , ( ac , _ ) => { ac . FirstUsable = true ; } ) ,
27- new ArgParsed ( 'l' , "Print options" , "last usable ip address" , ( ac , _ ) => { ac . LastUsable = true ; } ) ,
28- new ArgParsed ( 'u' , "Print options" , "number of usable ip addresses" , ( ac , _ ) => { ac . Usable = true ; } ) ,
29- new ArgParsed ( 't' , "Print options" , "total number of ip addresses" , ( ac , _ ) => { ac . Total = true ; } ) ,
27+ new ArgParsed ( 'i' , GroupPrint , ArgNameNetwork , ( ac , _ ) => { ac . IPNetwork = true ; } ) ,
28+ new ArgParsed ( 'n' , GroupPrint , "network address" , ( ac , _ ) => { ac . Network = true ; } ) ,
29+ new ArgParsed ( 'm' , GroupPrint , "netmask" , ( ac , _ ) => { ac . Netmask = true ; } ) ,
30+ new ArgParsed ( 'c' , GroupPrint , "cidr" , ( ac , _ ) => { ac . Cidr = true ; } ) ,
31+ new ArgParsed ( 'b' , GroupPrint , "broadcast" , ( ac , _ ) => { ac . Broadcast = true ; } ) ,
32+ new ArgParsed ( 'f' , GroupPrint , "first usable ip address" , ( ac , _ ) => { ac . FirstUsable = true ; } ) ,
33+ new ArgParsed ( 'l' , GroupPrint , "last usable ip address" , ( ac , _ ) => { ac . LastUsable = true ; } ) ,
34+ new ArgParsed ( 'u' , GroupPrint , "number of usable ip addresses" , ( ac , _ ) => { ac . Usable = true ; } ) ,
35+ new ArgParsed ( 't' , GroupPrint , "total number of ip addresses" , ( ac , _ ) => { ac . Total = true ; } ) ,
3036
3137 // Output options
32- new ArgParsed ( 'j' , "Output options" , "JSON output" , ( ac , _ ) => { ac . Json = true ; } ) ,
38+ new ArgParsed ( 'j' , GroupOutput , "JSON output" , ( ac , _ ) => { ac . Json = true ; } ) ,
3339
3440 // Parse options
35- new ArgParsed ( 'D' , "Parse options" , "IPv4 only - use default cidr (ClassA/8, ClassB/16, ClassC/24)" ,
41+ new ArgParsed ( 'D' , GroupParse , "IPv4 only - use default cidr (ClassA/8, ClassB/16, ClassC/24)" ,
3642 ( ac , _ ) => { ac . CidrParse = CidrParse . Default ; } ) ,
37- new ArgParsed ( 'd' , "Parse options" , "use cidr if not provided (default /32)" , ( ac , arg ) =>
43+ new ArgParsed ( 'd' , GroupParse , "use cidr if not provided (default /32)" , ( ac , arg ) =>
3844 {
3945 if ( ! IPNetwork2 . TryParseCidr ( arg , Sockets . AddressFamily . InterNetwork , out byte ? cidr ) )
4046 {
@@ -48,10 +54,10 @@ public static class Program
4854 } , argName : "cidr" ) ,
4955
5056 // Actions
51- new ArgParsed ( 'h' , "Actions" , "help message" ,
57+ new ArgParsed ( 'h' , GroupActions , "help message" ,
5258 ( ac , _ ) => { ac . Action = Action . Usage ; } ,
5359 example : "ipnetwork -h" ) ,
54- new ArgParsed ( 's' , "Actions" , "split network into cidr subnets" , ( ac , arg ) =>
60+ new ArgParsed ( 's' , GroupActions , "split network into cidr subnets" , ( ac , arg ) =>
5561 {
5662 if ( ! IPNetwork2 . TryParseCidr ( arg , Sockets . AddressFamily . InterNetwork , out byte ? cidr ) )
5763 {
@@ -63,16 +69,16 @@ public static class Program
6369 ac . Action = Action . Subnet ;
6470 ac . SubnetCidr = ( byte ) cidr ;
6571 } , argName : "cidr" , example : "ipnetwork -s 24 10.0.0.0/8" ) ,
66- new ArgParsed ( 'w' , "Actions" , "supernet networks into smallest possible subnets" ,
72+ new ArgParsed ( 'w' , GroupActions , "supernet networks into smallest possible subnets" ,
6773 ( ac , _ ) => { ac . Action = Action . Supernet ; } ,
6874 example : "ipnetwork -w 10.0.0.0/24 10.0.1.0/24" ) ,
69- new ArgParsed ( 'W' , "Actions" , "supernet networks into one single subnet" ,
75+ new ArgParsed ( 'W' , GroupActions , "supernet networks into one single subnet" ,
7076 ( ac , _ ) => { ac . Action = Action . WideSupernet ; } ,
7177 example : "ipnetwork -W 10.0.0.0/24 10.0.10.0/24" ) ,
72- new ArgParsed ( 'x' , "Actions" , "list all ip addresses in networks" ,
78+ new ArgParsed ( 'x' , GroupActions , "list all ip addresses in networks" ,
7379 ( ac , _ ) => { ac . Action = Action . ListIPAddress ; } ,
7480 example : "ipnetwork -x 10.0.0.0/30" ) ,
75- new ArgParsed ( 'C' , "Actions" , "network contain networks" , ( ac , arg ) =>
81+ new ArgParsed ( 'C' , GroupActions , "network contain networks" , ( ac , arg ) =>
7682 {
7783 if ( ! TryParseIPNetwork ( arg , ac . CidrParse , ac . CidrParsed , out IPNetwork2 ? ipnetwork ) )
7884 {
@@ -83,8 +89,8 @@ public static class Program
8389
8490 ac . Action = Action . ContainNetwork ;
8591 ac . ContainNetwork = ipnetwork ;
86- } , argName : "network" , example : "ipnetwork -C 10.0.0.0/8 10.0.1.0/24" ) ,
87- new ArgParsed ( 'o' , "Actions" , "network overlap networks" , ( ac , arg ) =>
92+ } , argName : ArgNameNetwork , example : "ipnetwork -C 10.0.0.0/8 10.0.1.0/24" ) ,
93+ new ArgParsed ( 'o' , GroupActions , "network overlap networks" , ( ac , arg ) =>
8894 {
8995 if ( ! TryParseIPNetwork ( arg , ac . CidrParse , ac . CidrParsed , out IPNetwork2 ? ipnetwork ) )
9096 {
@@ -95,8 +101,8 @@ public static class Program
95101
96102 ac . Action = Action . OverlapNetwork ;
97103 ac . OverlapNetwork = ipnetwork ;
98- } , argName : "network" , example : "ipnetwork -o 10.0.0.0/8 192.168.0.0/16" ) ,
99- new ArgParsed ( 'S' , "Actions" , "subtract network from networks" , ( ac , arg ) =>
104+ } , argName : ArgNameNetwork , example : "ipnetwork -o 10.0.0.0/8 192.168.0.0/16" ) ,
105+ new ArgParsed ( 'S' , GroupActions , "subtract network from networks" , ( ac , arg ) =>
100106 {
101107 if ( ! TryParseIPNetwork ( arg , ac . CidrParse , ac . CidrParsed , out IPNetwork2 ? ipnetwork ) )
102108 {
@@ -107,7 +113,7 @@ public static class Program
107113
108114 ac . Action = Action . SubtractNetwork ;
109115 ac . SubtractNetwork = ipnetwork ;
110- } , argName : "network" , example : "ipnetwork -S 10.0.1.0/24 10.0.0.0/23" ) ,
116+ } , argName : ArgNameNetwork , example : "ipnetwork -S 10.0.1.0/24 10.0.0.0/23" ) ,
111117
112118 // Hidden
113119 new ArgParsed ( '?' , ( _ , _ ) => { } ) ,
0 commit comments