X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=doc%2Fman1%2Fhath.1;h=207e87069da13933484907dc3a8c798c8bad647d;hb=02a793ab4325e5d04eb3ae3450aa33d01b4b4d1c;hp=3050385bdc82fde4cd23318f284910db8e73c1dc;hpb=c8cda71c4a73a4995669c0aaa9dce904bd2dcbd6;p=hath.git diff --git a/doc/man1/hath.1 b/doc/man1/hath.1 index 3050385..207e870 100644 --- a/doc/man1/hath.1 +++ b/doc/man1/hath.1 @@ -4,12 +4,12 @@ hath \- Manipulate network blocks in CIDR notation .SH SYNOPSIS -\fBhath\fR [\fBregexed|reduced|duped|diffed\fR] [\fB\-h\fR] [\fB-i \fIFILE\fR] \fI\fR +\fBhath\fR [\fBregexed|reduced|duped|diffed|listed|reversed\fR] [\fB\-hb\fR] \fI\fR .SH INPUT .P -The \fIinput\fR (default: stdin) should be a list of CIDR blocks, -separated by whitespace. Empty lines will be ignored, but otherwise, -malformed entries will cause an error to be displayed. +The \fIinput\fR (stdin) should be a list of CIDR blocks, separated by +whitespace. Empty lines will be ignored, but otherwise, malformed +entries will cause an error to be displayed. .SH DESCRIPTION .P Hath is a Haskell program for working with network blocks in CIDR @@ -23,9 +23,13 @@ Combine small blocks into larger ones. For example, if you have two consecutive /24s, they might combine into a larger /23. .IP \(bu View the result of block combination in a useful way. +.IP \(bu +List them. +.IP \(bu +Find their associated PTR records. .P -Hath does just that. It takes as its input (via stdin, or a file with -the -i parameter) a list of CIDR blocks. +Hath does just that. It takes as its input (via stdin) a list of CIDR +blocks. .SH MODES .P Hath has several modes: @@ -36,9 +40,8 @@ This computes a (Perl-compatible) regular expression matching the input CIDR blocks. It's the default mode of operation. .P .nf -.I $ hath <<< \(dq10.0.0.0/24 10.0.1.0/24\(dq -([^\.0-9](10)\.(0)\.(0)\.(0)[^\.0-9]|[^\.0-9](10)\.(0)\.(1) -\.(0)[^\.0-9]) +.I $ hath <<< \(dq10.0.0.0/29 10.0.0.8/29\(dq +((10)\.(0)\.(0)\.(15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0)) .fi .IP \(bu 2 \fBReduced\fR @@ -81,7 +84,7 @@ notation. List the IP addresses contained within the given CIDRs. .P .nf -.I $ hath listed <<< \(dq192.168.0.240/29\(dq +.I $ hath listed <<< 192.168.0.240/29 192.168.0.240 192.168.0.241 192.168.0.242 @@ -98,19 +101,56 @@ Perform reverse DNS (PTR) lookups on the IP addresses contained within the given CIDRs. .P .nf -.I $ hath reversed <<< \(dq198.41.0.4\/30\(dq +.I $ hath reversed <<< 198.41.0.4/30 198.41.0.4: a.root-servers.net. 198.41.0.5: 198.41.0.6: rs.internic.net. 198.41.0.7: .fi .P -Each of the modes also supports a present-tense flavor; the following -are equivalent to their counterparts: \fBregex\fR, \fBreduce\fR, -\fBdupe\fR, \fBdiff\fR, \fBlist\fR, \fBreverse\fR. +The DNS lookups are usually the bottleneck for this mode, but we can +perform them in parallel. Simply pass the number of threads to the GHC +runtime on the command line; for example, the following will perform +25 lookups in parallel: +.P +.nf +.I $ hath reversed +RTS -N25 <<< 198.41.0.4/24 +198.41.0.4: a.root-servers.net. +198.41.0.5: +198.41.0.6: rs.internic.net. +\(pc\(pc\(pc +.fi .SH OPTIONS -.IP \fB\-\-input\fR,\ \fB\-i\fR -Specify the input file containing a list of CIDRs, rather than using -stdin (the default). +.IP \fB\-\-barriers\fR,\ \fB\-b\fR +(regexed mode only) place barriers in front/back of the regex to +prevent e.g. '127.0.0.1' from matching '127.0.0.100'. The downside is +that the resulting regexp will match something that is not an IP +address, and this messes up e.g. \fIgrep -o\fR. + +.P +Without \fB\-\-barriers\fR, you can match things you shouldn't: + +.nf +.I $ echo 127.0.0.100 | grep -P $(hath <<< 127.0.0.1/32) +127.0.0.100 +.fi + +.P +Using \fB\-\-barriers\fR can prevent this: + +.nf +.I $ echo 127.0.0.100 | grep -P $(hath -b <<< 127.0.0.1/32) +.I $ echo $? +1 +.fi + +.P +But, this may also cause the regex to match something that isn't an IP +address: + +.nf +.I $ echo x127.0.0.1x | grep -Po $(hath -b <<< 127.0.0.1/32) +x127.0.0.1x +.fi