[Netadm-devel] gwc/gwclib confproc.c,1.17,1.18 confutil.c,1.9,1.10
Status: Beta
Brought to you by:
linuxpark
From: linuxpark <lin...@us...> - 2006-03-10 18:14:04
|
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 { |