1NetAddr::IP::UtilPP(3)User Contributed Perl DocumentationNetAddr::IP::UtilPP(3)
2
3
4
6 NetAddr::IP::UtilPP -- pure Perl functions for NetAddr::IP::Util
7
9 use NetAddr::IP::UtilPP qw(
10 hasbits
11 shiftleft
12 addconst
13 add128
14 sub128
15 notcontiguous
16 ipv4to6
17 mask4to6
18 ipanyto6
19 maskanyto6
20 ipv6to4
21 bin2bcd
22 bcd2bin
23 );
24
25 use NetAddr::IP::UtilPP qw(:all)
26
27 $rv = hasbits($bits128);
28 $bitsX2 = shiftleft($bits128,$n);
29 $carry = addconst($ipv6naddr,$signed_32con);
30 ($carry,$ipv6naddr)=addconst($ipv6naddr,$signed_32con);
31 $carry = add128($ipv6naddr1,$ipv6naddr2);
32 ($carry,$ipv6naddr)=add128($ipv6naddr1,$ipv6naddr2);
33 $carry = sub128($ipv6naddr1,$ipv6naddr2);
34 ($spurious,$cidr) = notcontiguous($mask128);
35 ($carry,$ipv6naddr)=sub128($ipv6naddr1,$ipv6naddr2);
36 $ipv6naddr = ipv4to6($netaddr);
37 $ipv6naddr = mask4to6($netaddr);
38 $ipv6naddr = ipanyto6($netaddr);
39 $ipv6naddr = maskanyto6($netaddr);
40 $netaddr = ipv6to4($pv6naddr);
41 $bcdtext = bin2bcd($bits128);
42 $bits128 = bcd2bin($bcdtxt);
43
45 NetAddr::IP::UtilPP provides pure Perl functions for NetAddr::IP::Util
46
47 · $rv = hasbits($bits128);
48
49 This function returns true if there are one's present in the 128
50 bit string and false if all the bits are zero.
51
52 i.e. if (hasbits($bits128)) {
53 &do_something;
54 }
55
56 or if (hasbits($bits128 & $mask128) {
57 &do_something;
58 }
59
60 This allows the implementation of logical functions of the form of:
61
62 if ($bits128 & $mask128) {
63 ...
64
65 input: 128 bit IPv6 string
66 returns: true if any bits are present
67
68 · $bitsXn = shiftleft($bits128,$n);
69
70 input: 128 bit string variable,
71 number of shifts [optional]
72 returns: bits X n shifts
73
74 NOTE: input bits are returned
75 if $n is not specified
76
77 · addconst($ipv6naddr,$signed_32con);
78
79 Add a signed constant to a 128 bit string variable.
80
81 input: 128 bit IPv6 string,
82 signed 32 bit integer
83 returns: scalar carry
84 array (carry, result)
85
86 · add128($ipv6naddr1,$ipv6naddr2);
87
88 Add two 128 bit string variables.
89
90 input: 128 bit string var1,
91 128 bit string var2
92 returns: scalar carry
93 array (carry, result)
94
95 · sub128($ipv6naddr1,$ipv6naddr2);
96
97 Subtract two 128 bit string variables.
98
99 input: 128 bit string var1,
100 128 bit string var2
101 returns: scalar carry
102 array (carry, result)
103
104 Note: The carry from this operation is the result of adding the
105 one's complement of ARG2 +1 to the ARG1. It is logically NOT
106 borrow.
107
108 i.e. if ARG1 >= ARG2 then carry = 1
109 or if ARG1 < ARG2 then carry = 0
110
111 · ($spurious,$cidr) = notcontiguous($mask128);
112
113 This function counts the bit positions remaining in the mask when
114 the rightmost '0's are removed.
115
116 input: 128 bit netmask
117 returns true if there are spurious
118 zero bits remaining in the
119 mask, false if the mask is
120 contiguous one's,
121 128 bit cidr
122
123 · $ipv6naddr = ipv4to6($netaddr);
124
125 Convert an ipv4 network address into an ipv6 network address.
126
127 input: 32 bit network address
128 returns: 128 bit network address
129
130 · $ipv6naddr = mask4to6($netaddr);
131
132 Convert an ipv4 netowrk address into an ipv6 network mask.
133
134 input: 32 bit network/mask address
135 returns: 128 bit network/mask address
136
137 NOTE: returns the high 96 bits as one's
138
139 · $ipv6naddr = ipanyto6($netaddr);
140
141 Similar to ipv4to6 except that this function takes either an IPv4
142 or IPv6 input and always returns a 128 bit IPv6 network address.
143
144 input: 32 or 128 bit network address
145 returns: 128 bit network address
146
147 · $ipv6naddr = maskanyto6($netaddr);
148
149 Similar to mask4to6 except that this function takes either an IPv4
150 or IPv6 netmask and always returns a 128 bit IPv6 netmask.
151
152 input: 32 or 128 bit network mask
153 returns: 128 bit network mask
154
155 · $netaddr = ipv6to4($pv6naddr);
156
157 Truncate the upper 96 bits of a 128 bit address and return the
158 lower 32 bits. Returns an IPv4 address as returned by inet_aton.
159
160 input: 128 bit network address
161 returns: 32 bit inet_aton network address
162
163 · $bcdtext = bin2bcd($bits128);
164
165 Convert a 128 bit binary string into binary coded decimal text
166 digits.
167
168 input: 128 bit string variable
169 returns: string of bcd text digits
170
171 · $bits128 = bcd2bin($bcdtxt);
172
173 Convert a bcd text string to 128 bit string variable
174
175 input: string of bcd text digits
176 returns: 128 bit string variable
177
179 hasbits
180 shiftleft
181 addconst
182 add128
183 sub128
184 notcontiguous
185 ipv4to6
186 mask4to6
187 ipanyto6
188 maskanyto6
189 ipv6to4
190 bin2bcd
191 bcd2bin
192 comp128
193 bin2bcdn
194 bcdn2txt
195 bcdn2bin
196 simple_pack
197 threads
198
200 Michael Robinton <michael@bizsystems.com>
201
203 Copyright 2003 - 2012, Michael Robinton <michael@bizsystems.com>
204
205 All rights reserved.
206
207 This program is free software; you can redistribute it and/or modify it
208 under the terms of either:
209
210 a) the GNU General Public License as published by the Free
211 Software Foundation; either version 2, or (at your option) any
212 later version, or
213
214 b) the "Artistic License" which comes with this distribution.
215
216 This program is distributed in the hope that it will be useful, but
217 WITHOUT ANY WARRANTY; without even the implied warranty of
218 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the
219 GNU General Public License or the Artistic License for more details.
220
221 You should have received a copy of the Artistic License with this
222 distribution, in the file named "Artistic". If not, I'll be glad to
223 provide one.
224
225 You should also have received a copy of the GNU General Public License
226 along with this program in the file named "Copying". If not, write to
227 the
228
229 Free Software Foundation, Inc.,
230 51 Franklin Street, Fifth Floor
231 Boston, MA 02110-1301 USA
232
233 or visit their web page on the internet at:
234
235 http://www.gnu.org/copyleft/gpl.html.
236
238 Michael Robinton <michael@bizsystems.com>
239
240
241
242perl v5.30.0 2019-07-26 NetAddr::IP::UtilPP(3)