[Netadm-devel] gwc/gwclib confproc.c,1.13,1.14 confutil.c,1.5,1.6 linklist.c,1.1.1.1,1.2 sysutil.c,1
Status: Beta
Brought to you by:
linuxpark
From: linuxpark <lin...@us...> - 2006-03-06 14:16:12
|
Update of /cvsroot/netadm/gwc/gwclib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12384/gwclib Modified Files: confproc.c confutil.c linklist.c sysutil.c Log Message: ADD: Almost all is being finished in user layer for supporting more detailed pf rule. Except packet filter layer ("apply" function & ioctl & pf.c) FIX: policy cache concerned problem was fixed. ADD: cache lock FIX: socket error (it was stemed from wrong fd) Index: linklist.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/linklist.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** linklist.c 30 Jan 2006 17:41:28 -0000 1.1.1.1 --- linklist.c 6 Mar 2006 14:16:05 -0000 1.2 *************** *** 90,94 **** XFREE(MTYPE_LINK_NODE, node); } ! /* Add new data to the list. */ void --- 90,94 ---- XFREE(MTYPE_LINK_NODE, node); } ! /* Add new data to the list. */ void Index: sysutil.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/sysutil.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** sysutil.c 5 Mar 2006 01:11:00 -0000 1.3 --- sysutil.c 6 Mar 2006 14:16:05 -0000 1.4 *************** *** 792,796 **** char *p; char addr[OL*2]; - int len; int quit = 0; int i = 0; --- 792,795 ---- Index: confutil.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/confutil.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** confutil.c 6 Mar 2006 04:23:56 -0000 1.5 --- confutil.c 6 Mar 2006 14:16:05 -0000 1.6 *************** *** 65,69 **** char *name = (char *)arg; - out ("\n"); for ( i = 0 ; i < csm->fc_net_cnt; i++) { if ( !strcmp (csm->fc_net[i].name, name)) { --- 65,68 ---- *************** *** 87,91 **** char *name = (char *)arg; - out ("\n"); for ( i = 0 ; i < csm->fc_svc_cnt; i++) { if ( !strcmp (csm->fc_svc[i].name, name)) { --- 86,89 ---- *************** *** 110,114 **** char *name = (char *)arg; - out ("\n"); for ( i = 0 ; i < csm->fc_fw_cnt; i++) { if ( !strcmp (csm->fc_fw[i].name, name)) { --- 108,111 ---- *************** *** 134,138 **** for ( i = 0 ; i < csm->fc_pol_cnt; i++) { - out ("%d, csm->fc_pol[%d].name: %s\n", i, i, csm->fc_pol[i].name); if (!strcmp (csm->fc_pol[i].name, name)) { --- 131,134 ---- *************** *** 140,144 **** fr->ret = RET_OK; - out ("found: %s\n", csm->fc_pol[i].name); return &csm->fc_pol[i]; } --- 136,139 ---- *************** *** 175,179 **** fc_fw_t *fw ) { - out ("\n"); strcpy (c->polname, p->name); strcpy (c->msg.indev, sn->net_if); --- 170,173 ---- *************** *** 228,231 **** --- 222,233 ---- }tmp_addr_t; + typedef struct { + fc_umsg_t *p; /* node for deleting */ + }tmp_umsg_t; + + + static void destroy_resource (void *p) { + free (p); + } /* __add_fc_ipol() * : this function add internal policy not for GUI user process but for pf module. *************** *** 262,266 **** char *polname = (char *)arg; - out ("\n"); if (!(pol = sys_ucmd_msg (_CMD_GET_FC_POL, polname, --- 264,267 ---- *************** *** 269,273 **** return NULL; - out ("success get pol\n"); if (!(snet = sys_ucmd_msg (_CMD_GET_FC_NET, pol->snet, --- 270,273 ---- *************** *** 276,280 **** return NULL; - out ("success get snet: %s\n", snet->name); if (!(dnet = sys_ucmd_msg (_CMD_GET_FC_NET, pol->dnet, --- 276,279 ---- *************** *** 283,287 **** return NULL; - out ("success get dnet: %s\n", dnet->name); if (!(ssvc = sys_ucmd_msg (_CMD_GET_FC_SVC, pol->ssvc, --- 282,285 ---- *************** *** 290,294 **** return NULL; - out ("success get ssvc: %s\n", ssvc->name); if (!(dsvc = sys_ucmd_msg (_CMD_GET_FC_SVC, pol->dsvc, --- 288,291 ---- *************** *** 297,301 **** return NULL; - out ("success get dsvc: %s\n", dsvc->name); if (!(fw = sys_ucmd_msg (_CMD_GET_FC_FW, pol->fw, --- 294,297 ---- *************** *** 304,308 **** return NULL; - out ("success get fw: %s\n", fw->name); if ( parse_iprange (snet->addr, saddr, fr) != TRUE) { return NULL; --- 300,303 ---- *************** *** 317,322 **** return NULL; } ! ! out ("before extend saddr\n"); for ( i = saddr[0]; i <= saddr[1]; i++) for ( j = saddr[2]; j <= saddr[3]; j++) --- 312,317 ---- return NULL; } ! ! saddr_list->del = destroy_resource; for ( i = saddr[0]; i <= saddr[1]; i++) for ( j = saddr[2]; j <= saddr[3]; j++) *************** *** 363,367 **** } ! out ("before extend daddr\n"); for ( i = daddr[0]; i <= daddr[1]; i++) for ( j = daddr[2]; j <= daddr[3]; j++) --- 358,362 ---- } ! daddr_list->del = destroy_resource; for ( i = daddr[0]; i <= daddr[1]; i++) for ( j = daddr[2]; j <= daddr[3]; j++) *************** *** 394,404 **** } - out ("before LIST LOOP\n"); LIST_LOOP (saddr_list, sa, SAN) { LIST_LOOP (daddr_list, da, DAN) { p = (fc_umsg_t*)malloc (sizeof (fc_umsg_t)); if (!p) { ! strcpy(fr->errmsg, "failed to alloc ipol node"); ! fr->ret = RET_EMALLOC; return NULL; } --- 389,404 ---- } LIST_LOOP (saddr_list, sa, SAN) { LIST_LOOP (daddr_list, da, DAN) { p = (fc_umsg_t*)malloc (sizeof (fc_umsg_t)); if (!p) { ! ! if (fr) { ! strcpy(fr->errmsg, "failed to alloc ipol node"); ! fr->ret = RET_EMALLOC; ! } ! list_delete_all_node (saddr_list); ! list_delete_all_node (daddr_list); ! return NULL; } *************** *** 406,410 **** --- 406,412 ---- p->msg.saddr = sa->addr; p->msg.daddr = da->addr; + LIST_LOCK (runpol_list); listnode_add (runpol_list, p); + LIST_UNLOCK (runpol_list); } } *************** *** 412,416 **** if (fr) fr->ret = RET_OK; ! return polname; } --- 414,420 ---- if (fr) fr->ret = RET_OK; ! ! list_delete_all_node (saddr_list); ! list_delete_all_node (daddr_list); return polname; } *************** *** 420,433 **** struct listnode *n; char *polname = (char *)arg; ! out (""); LIST_LOOP (runpol_list, p, n) { if (!strcmp (p->polname, polname)) { ! listnode_delete (runpol_list, p); } } ! out (""); ! fr->ret = RET_OK; return polname; } --- 424,458 ---- struct listnode *n; char *polname = (char *)arg; + list tmp_list; + void *dp; ! tmp_list = list_new (); ! if (!tmp_list) { ! strcpy(fr->errmsg, "failed to alloc tmp list"); ! ! if (fr) ! fr->ret = RET_EMALLOC; ! ! return NULL; ! } ! ! /* MUST NOT register del proc tmp_list->del = destroy_resource; */ ! ! LIST_LOCK(runpol_list); LIST_LOOP (runpol_list, p, n) { if (!strcmp (p->polname, polname)) { ! listnode_add (tmp_list, p); } } ! LIST_LOOP (tmp_list, dp, n) { ! listnode_delete (runpol_list, dp); ! } ! LIST_UNLOCK(runpol_list); ! ! if (fr) ! fr->ret = RET_OK; ! ! list_delete_all_node (tmp_list); return polname; } Index: confproc.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/confproc.c,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** confproc.c 6 Mar 2006 04:23:56 -0000 1.13 --- confproc.c 6 Mar 2006 14:16:05 -0000 1.14 *************** *** 51,54 **** --- 51,55 ---- extern sm_t *csm; extern int errno; + #if 0 static inline void *************** *** 62,65 **** --- 63,67 ---- } #endif + /* * this tostab is used in both filter tos and pol mark *************** *** 127,133 **** }; - /* - * void name (int argc, char *argv[], int modify, frp_t fr) - */ void list_apinfo(int argc, char *argv[], int modify, frp_t fr) --- 129,132 ---- *************** *** 3099,3102 **** --- 3098,3118 ---- frerr(fr, fr->ret, "%s\n", fr->errmsg); return; + }else { + + if (!sys_ucmd_msg ( _CMD_ADD_FC_IPOL, + argv[0], + strlen(argv[0]), + fr) + ) { + + out ("Failed to add ipol \"%s\" (%d); %s", + argv[0], + fr->ret, + fr->errmsg != NULL ? fr->errmsg:""); + + } else { + + out ("Success to add ipol \"%s\"", argv[0]); + } } } |