01-06-2019
Quote:
Originally Posted by
azdps
EDIT: Reason for segmentation fault solved
Okay I found this information reference
OpenBSD awk vs gawk. It states "Gawk uses 53-bit unsigned integers, but OpenBSD awk uses 32-bit signed integers." This applies to the bitwise operations.
If I convert
128.0.0.0 to decimal the result is 2,147,483,648 which exceeds the maximum 32-bit signed integer value for variables 2,147,483,647 declared as integers. So it's clear now why the script that uses the native
lshift, rshift, or bitwise operations is causing an awk segmentation fault with IP's greater than
128.0.0.0 and the script that uses the custom
bit_lshift, bit_rshift, bit_or bitwise operations doesn't.
End of a long story =(
The only time segmentation fault isn't programmer error is when your RAM is faulty or someone pulled a disk they really shouldn't have. This isn't expected behavior, this is still a bug.
9 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Dear Srs :-)
I'm looking for a shell script, that given a network in CIDR format it lists all IPs, for example:
Preferredly a shell script, but a Perl, Python, C, etc.. is also welcome :-)
I have been looking in sipcalc, ipcalc, etc.. options but this feature is not implemented :-(
... (10 Replies)
Discussion started by: Santi
10 Replies
2. Shell Programming and Scripting
Hi,
Please anyone help to achive this using perl or unix scripting .
This is date in my table 20090224,based on the date need to check the files,If file exist for that date then increment by 1 for that date and check till max date 'i.e.20090301 and push those files .
files1_20090224... (2 Replies)
Discussion started by: akil
2 Replies
3. Programming
Hello everybody,
I'm coding a network program and i need it to "understand" ip ranges, but i don't know how to make to parse an IP CIDR range, let's say "172.16.10.0/24" to work with the specified IP range.
I've found a program which does it, but i don't understand the code. Here is the... (3 Replies)
Discussion started by: semash!
3 Replies
4. UNIX for Dummies Questions & Answers
I have a list of about 200,000 lines in a text file that look like this:
1 1 120
1 80 200
1 150 270
5 50 170
5 100 220
5 300 420
The first column is an identifier, the next 2 columns are a range (always 120 value range)
I'm trying fill in the values of those ranges, and remove... (4 Replies)
Discussion started by: knott76
4 Replies
5. Shell Programming and Scripting
Hi,
I have two files
file1 chr1_22450_22500
chr2_12300_12350
chr1_34500_34550
file2 11000_13000
15000_19000
33000_44000
If the file 1 ranges fall between file2 ranges then assign the value of file2 in column 2 to file1
output:
chr2_12300_12350 11000_13000
chr1_34500_34550 ... (7 Replies)
Discussion started by: Diya123
7 Replies
6. Shell Programming and Scripting
Looking for a simple way to convert ranges to a numerical sequence that would assign the original value of the range to the individual numbers that are on the range.
Thank you
given data
13196-13199 0
13200 4
13201 10
13202-13207 3
13208-13210 7
desired... (3 Replies)
Discussion started by: jcue25
3 Replies
7. Shell Programming and Scripting
Hi all, I would appreciate if someone could share how to convert CIDR notation to netmask and vice versa.
The value below is just an example. it could be different numbers/ip addresses.
Initial Output, let say file1.txt
Final Output, let say file2.txt (3 Replies)
Discussion started by: type8code0
3 Replies
8. Shell Programming and Scripting
Hi,
Recently I had to convert a 280K lines of ip ranges to the CIDR notation and generate a file to be used by ipset (netfilter) for ip filtering.
Input file:
000.000.000.000 - 000.255.255.255 , 000 , invalid ip
001.000.064.000 - 001.000.127.255 , 000 , XXXXX
001.000.245.123 -... (10 Replies)
Discussion started by: ripat
10 Replies
9. What is on Your Mind?
Weary of seeing our load average go up to 50+, I just did a major block on these networks (stats over a less than 20 min interval):
https://www.unix.com/members/1-albums215-picture866.png (3 Replies)
Discussion started by: Neo
3 Replies
LEARN ABOUT MOJAVE
integer
integer(3pm) Perl Programmers Reference Guide integer(3pm)
NAME
integer - Perl pragma to use integer arithmetic instead of floating point
SYNOPSIS
use integer;
$x = 10/3;
# $x is now 3, not 3.33333333333333333
DESCRIPTION
This tells the compiler to use integer operations from here to the end of the enclosing BLOCK. On many machines, this doesn't matter a
great deal for most computations, but on those without floating point hardware, it can make a big difference in performance.
Note that this only affects how most of the arithmetic and relational operators handle their operands and results, and not how all numbers
everywhere are treated. Specifically, "use integer;" has the effect that before computing the results of the arithmetic operators (+, -,
*, /, %, +=, -=, *=, /=, %=, and unary minus), the comparison operators (<, <=, >, >=, ==, !=, <=>), and the bitwise operators (|, &, ^,
<<, >>, |=, &=, ^=, <<=, >>=), the operands have their fractional portions truncated (or floored), and the result will have its fractional
portion truncated as well. In addition, the range of operands and results is restricted to that of familiar two's complement integers,
i.e., -(2**31) .. (2**31-1) on 32-bit architectures, and -(2**63) .. (2**63-1) on 64-bit architectures. For example, this code
use integer;
$x = 5.8;
$y = 2.5;
$z = 2.7;
$a = 2**31 - 1; # Largest positive integer on 32-bit machines
$, = ", ";
print $x, -$x, $x + $y, $x - $y, $x / $y, $x * $y, $y == $z, $a, $a + 1;
will print: 5.8, -5, 7, 3, 2, 10, 1, 2147483647, -2147483648
Note that $x is still printed as having its true non-integer value of 5.8 since it wasn't operated on. And note too the wrap-around from
the largest positive integer to the largest negative one. Also, arguments passed to functions and the values returned by them are not
affected by "use integer;". E.g.,
srand(1.5);
$, = ", ";
print sin(.5), cos(.5), atan2(1,2), sqrt(2), rand(10);
will give the same result with or without "use integer;" The power operator "**" is also not affected, so that 2 ** .5 is always the
square root of 2. Now, it so happens that the pre- and post- increment and decrement operators, ++ and --, are not affected by "use
integer;" either. Some may rightly consider this to be a bug -- but at least it's a long-standing one.
Finally, "use integer;" also has an additional affect on the bitwise operators. Normally, the operands and results are treated as unsigned
integers, but with "use integer;" the operands and results are signed. This means, among other things, that ~0 is -1, and -2 & -5 is -6.
Internally, native integer arithmetic (as provided by your C compiler) is used. This means that Perl's own semantics for arithmetic
operations may not be preserved. One common source of trouble is the modulus of negative numbers, which Perl does one way, but your
hardware may do another.
% perl -le 'print (4 % -3)'
-2
% perl -Minteger -le 'print (4 % -3)'
1
See "Pragmatic Modules" in perlmodlib, "Integer Arithmetic" in perlop
perl v5.18.2 2014-01-06 integer(3pm)