Date: Sun, 30 Jun 2002 14:19:03 +0200 From: Abraham van der Merwe <abz@frogfoot.net> To: FreeBSD Hacking <freebsd-hackers@freebsd.org> Subject: ipfirewall(4) problems Message-ID: <20020630121903.GA17612@oasis.frogfoot.net>
next in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
Hi!
I'm trying to add/remove/show ipfw rules in a C program. However I'm
struggling.
First of, the ipfirewall(4) man pages made me think that you'd do a
getsockopt() for each rule, starting with fw_number=0 with optlen=sizeof(struct
ip_fw), but ipfw2.c and ipfw.c from the ipfw source code speaks otherwise.
According to that getsockopt IP_FW_GET will return the data for all the
rules, returning the len of all these rules if you didn't specify a valid
length.
So, I tried this. Here is the small code snippet:
------------< snip <------< snip <------< snip <------------
static int ipfw_show (int fd)
{
char buf[1024];
socklen_t len;
len = 1;
printf ("len: %u\n",len);
if (getsockopt (fd,IPPROTO_IP,IP_FW_GET,buf,&len) < 0) {
perror ("setsockopt IP_FW_GET");
return (-1);
}
printf ("len: %u\n",len);
return (0);
}
int main (int argc,char *argv[])
{
int fd;
if ((fd = socket (PF_INET,SOCK_RAW,IPPROTO_RAW)) < 0) {
perror ("socket");
exit (EXIT_FAILURE);
}
if (ipfw_show (fd) < 0) {
close (fd);
exit (EXIT_FAILURE);
}
close (fd);
exit (EXIT_SUCCESS);
}
------------< snip <------< snip <------< snip <------------
Which gives some interesting results:
------------< snip <------< snip <------< snip <------------
root@pris:~/tinysnmp/tinysnmp-0.2.2/EXP# ./ipfw_show
len: 1
len: 1
------------< snip <------< snip <------< snip <------------
Surely getsockopt() should've returned a buffer length? Is this a bug or am
I missing something?
PS:
It would also be great if someone could update the man page to actually
reflect the real interface. The man page I have dates back to June 1997.
--
Regards
Abraham
What awful irony is this?
We are as gods, but know it not.
___________________________________________________
Abraham vd Merwe [ZR1BBQ] - Frogfoot Networks
P.O. Box 3472, Matieland, Stellenbosch, 7602
Cell: +27 82 565 4451 Http: http://www.frogfoot.net
Email: abz@frogfoot.net
[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQE9Hvc30jJV70h31dERAuhtAKCCdY1hCITMHiQ5YveNLGyzVfsRfwCeLrZv
BT//9FChAexojnUOysPJVBU=
=gqwB
-----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020630121903.GA17612>
