Update of /cvsroot/netadm/gwc/gwclib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26809/gwclib
Modified Files:
confproc.c confutil.c
Log Message:
ADD:
ADD: internal fc_apply routine through ioctl call.
TEST: Basic test done.
- Config: http://jhpark.guideline.co.kr/data/PROJECT/netadm/gwc/test/gwc-v0.1-pre3-config
- Internal policy of pf:
http://jhpark.guideline.co.kr/data/PROJECT/netadm/gwc/test/gwc-v0.1-pre3-dump_ipol.txt
Index: confutil.c
===================================================================
RCS file: /cvsroot/netadm/gwc/gwclib/confutil.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** confutil.c 8 Mar 2006 15:29:55 -0000 1.9
--- confutil.c 10 Mar 2006 18:13:58 -0000 1.10
***************
*** 17,20 ****
--- 17,21 ----
#include <arpa/inet.h>
#include <sys/time.h>
+ #include <sys/ioctl.h>
#include <strings.h>
#include <string.h>
***************
*** 396,402 ****
void * _apply_fc_ipol ( void *arg, int len, frp_t fr) {
! /* TODO */
! return NULL;
}
--- 397,443 ----
void * _apply_fc_ipol ( void *arg, int len, frp_t fr) {
+ static fc_umsg_t *p;
+ struct listnode *n;
+ int fd;
+ int idx;
+ int ret;
! fd = open(SZPFDEV, O_RDWR | O_NDELAY);
! if (fd < 0) {
! if (fr) {
! sprintf (fr->errmsg, "Failed to open %s\n", SZPFDEV);
! fr->ret = RET_EOPEN;
! }
! return NULL;
! }
!
! ioctl (fd, IOCTLPF_REFLESH, 0);
! LIST_LOOP(runpol_list, p, n) {
!
! if (p->msg.rule == FC_PR_CONTROL)
! idx = IOCTLPF_REGISTER_NET;
!
! else if (p->msg.rule == FC_PR_MOD_HEADER )
! idx = IOCTLPF_REGISTER_MODSEQ;
!
! if ((ret = ioctl(fd, idx, &p->msg)) < 0) {
!
! if (errno != EBADSLT) {
!
! if (fr) {
! sprintf (fr->errmsg, "%s: Ioctl Failed to apply policy \"%s\"",
! SZPFDEV, p->polname);
! fr->ret = RET_EIOCTL;
! }
!
! close(fd);
! return NULL;
! }
! }
! }
!
! close(fd);
! /* nomeaning */
! return runpol_list;
}
***************
*** 595,599 ****
}
- //func(argc, argv, CBFROM_MAIN, &fr);
func(argc, argv, 0, &fr);
return &fr;
--- 636,639 ----
Index: confproc.c
===================================================================
RCS file: /cvsroot/netadm/gwc/gwclib/confproc.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** confproc.c 8 Mar 2006 15:29:55 -0000 1.17
--- confproc.c 10 Mar 2006 18:13:58 -0000 1.18
***************
*** 3132,3140 ****
if (argc == 0) {
! if ( getpid() != getpidbyname("/proc", SZADMD) &&
! send_ipcmsg(_CMD_APPLY_FC_IPOL, NULL, 0, fr) != RET_OK ){
! frerr(fr, fr->ret, "Failed to apply internal policies (%d): %s\n",
! fr->ret, fr->errmsg != NULL ? fr->errmsg : "");
! return;
}
else {
--- 3132,3142 ----
if (argc == 0) {
! if ( getpid() != getpidbyname("/proc", SZADMD) ) {
! if (send_ipcmsg(_CMD_APPLY_FC_IPOL, NULL, 0, fr) != RET_OK ){
! frerr(fr, fr->ret, "Failed to apply internal policies (%d): %s\n",
! fr->ret, fr->errmsg != NULL ? fr->errmsg : "");
!
! return;
! }
}
else {
|