| From: | Madison Kelly <linux(at)alteeve(dot)com> | 
|---|---|
| To: | pgsql-general(at)postgresql(dot)org | 
| Subject: | Help creating a function | 
| Date: | 2007-08-15 21:29:17 | 
| Message-ID: | 46C3702D.1080603@alteeve.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-general | 
Hi all,
   I'm using ulogd with PostgreSQL which stores IP addresses as 32bit 
unsigned integers. So when I select some data I get something like:
ulogd=> SELECT id, ip_saddr, ip_daddr, raw_pktlen, ip_totlen, tcp_window 
FROM ulog LIMIT 20;
  id |  ip_saddr  |  ip_daddr  | raw_pktlen | ip_totlen | tcp_window
----+------------+------------+------------+-----------+------------
   1 | 3232235874 | 1074534522 |         46 |        46 |      25825
   Where 'ip_saddr' and 'ip_daddr' are 'bigint'. I know I can convert 
these numbers to dotted-decimal in perl with a small script like:
-=-=-
#!/usr/bin/perl
# This would be the number read from the DB
my $num=3232235874;
# Now do the math
my $temp=$num/256;
my $D=256*($temp-int($temp));
$temp=(int($temp))/256;
my $C=256*($temp-int($temp));
$temp=(int($temp))/256;
my $B=256*($temp-int($temp));
my $A=int($temp);
my $ip="$A.$B.$C.$D";
# Print the results
print "'num': [$num] -> 'IP': [$ip]\n";
-=-=-
   What I would like to do is create a function that would do the same 
thing so I could read out the IP addresses as standard dotted-decimal 
format. Could anyone help me with this? I am quite the n00b when it 
comes to functions. :)
Thanks all!
Madi
| From | Date | Subject | |
|---|---|---|---|
| Next Message | James B. Byrne | 2007-08-15 21:38:04 | Re: pg_dump on local Windows, pg_restore on Linux? | 
| Previous Message | Lew | 2007-08-15 21:09:46 | Re: Best practice for: ERROR: invalid byte sequence for encoding "UTF8" |