4 * Copyright (C) 2003-2005 by Darren Reed.
6 * See the IPFILTER.LICENCE file for details on licencing.
8 * Id: load_hashnode.c,v 1.2.4.2 2006/06/16 17:21:05 darrenr Exp
12 #include <sys/ioctl.h>
14 #include "netinet/ip_lookup.h"
15 #include "netinet/ip_htable.h"
17 static int hashfd
= -1;
20 int load_hashnode(unit
, name
, node
, iocfunc
)
30 if ((hashfd
== -1) && ((opts
& OPT_DONOTHING
) == 0))
31 hashfd
= open(IPLOOKUP_NAME
, O_RDWR
);
32 if ((hashfd
== -1) && ((opts
& OPT_DONOTHING
) == 0))
35 op
.iplo_type
= IPLT_HASH
;
38 op
.iplo_size
= sizeof(ipe
);
39 op
.iplo_struct
= &ipe
;
40 strncpy(op
.iplo_name
, name
, sizeof(op
.iplo_name
));
42 bzero((char *)&ipe
, sizeof(ipe
));
43 bcopy((char *)&node
->ipe_addr
, (char *)&ipe
.ipe_addr
,
44 sizeof(ipe
.ipe_addr
));
45 bcopy((char *)&node
->ipe_mask
, (char *)&ipe
.ipe_mask
,
46 sizeof(ipe
.ipe_mask
));
47 bcopy((char *)&node
->ipe_group
, (char *)&ipe
.ipe_group
,
48 sizeof(ipe
.ipe_group
));
50 if ((opts
& OPT_REMOVE
) == 0)
51 err
= (*iocfunc
)(hashfd
, SIOCLOOKUPADDNODE
, &op
);
53 err
= (*iocfunc
)(hashfd
, SIOCLOOKUPDELNODE
, &op
);
56 if (!(opts
& OPT_DONOTHING
)) {
57 perror("load_hash:SIOCLOOKUP*NODE");