[Netadm-devel] gwc/gwclib confproc.c,1.12,1.13 conftab.c,1.5,1.6 confutil.c,1.4,1.5
Status: Beta
Brought to you by:
linuxpark
From: linuxpark <lin...@us...> - 2006-03-06 04:24:02
|
Update of /cvsroot/netadm/gwc/gwclib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25121/gwclib Modified Files: confproc.c conftab.c confutil.c Log Message: MOD: modify running policy cache managed by gwcadmd gwccli ----+----------> gwcadmd(running policy cache) ---> pf.ko | gwcguid ---+ Index: confproc.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/confproc.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** confproc.c 5 Mar 2006 01:11:00 -0000 1.12 --- confproc.c 6 Mar 2006 04:23:56 -0000 1.13 *************** *** 50,53 **** --- 50,54 ---- extern sys_ucmd_t ucmdtab[]; extern sm_t *csm; + extern int errno; #if 0 static inline void *************** *** 2852,2855 **** --- 2853,2904 ---- } + static int send_ipcmsg ( int type, char *arg, int len, frp_t fr) { + sys_ipc_msg_t ipc_msg, *ipcmsg = &ipc_msg; + sys_ipc_ret_t ipc_ret, *ipcret = &ipc_ret; + int ret; + int fd; + + ipcmsg->type = type; + switch (type) { + case IPCMTYPE_FC_ADD_IPOL: + + case IPCMTYPE_FC_DEL_IPOL: + + ipcmsg->len = len; + strcpy ((char *)ipcmsg->data, arg); + + break; + + case IPCMTYPE_FC_APPLY_IPOL: + + ipcmsg->len = 0; + + break; + + default: + sprintf(fr->errmsg, "unknown message type \"%d\"", type); + fr->ret = RET_EUNKNOWN; + return fr->ret; + } + + if ((fd = sys_ipcconn()) < 0) { + sprintf(fr->errmsg, "Failed to connect to %s\n", SZADMD); + return fr->ret = SYS_ECONN; + } + + if ((ret = write(fd, ipcmsg, sizeof(sys_ipc_msg_t) + len)) < 0) { + sprintf(fr->errmsg, "Failed to write to %s\n", SZADMD); + return fr->ret = ret; + } + + if ((ret = read(fd, ipcret, sizeof(sys_ipc_ret_t))) < 0) { + sprintf(fr->errmsg, "Failed to write to %s: %s\n", + SZADMD, strerror(errno)); + return fr->ret = ret; + } + + return RET_OK; + } + void add_fc_pol(int argc, char *argv[], int modify, frp_t fr) *************** *** 2863,2866 **** --- 2912,2916 ---- if (argc == 8) { + if (csm->fc_pol_cnt < MAXSHM_FC_POL) { pol = &fwcpol; *************** *** 3043,3052 **** } else { ! if (!sys_ucmd_msg (_CMD_ADD_FC_IPOL, ! argv[0], ! strlen(argv[0]), ! fr)) ! frerr(fr, fr->ret,"Failed to add internal policy (%s): " ! "%s", argv[0], fr->errmsg); } } --- 3093,3103 ---- } else { ! if ( getpid() != getpidbyname("/proc", SZADMD) && ! send_ipcmsg(IPCMTYPE_FC_ADD_IPOL, argv[0], ! strlen(argv[0]), fr) != RET_OK ) ! { ! frerr(fr, fr->ret, "%s\n", fr->errmsg); ! return; ! } } } *************** *** 3070,3091 **** if (argc == 1) { ! if (!(pol = sys_ucmd_msg (_CMD_GET_FC_POL, ! argv[0], ! strlen(argv[0]), ! fr))) { ! frerr(fr, RET_ENOTFOUND, ! "[FC/policy name] \"%s\" does not exist\n", argv[0]); ! } ! #if 0 ! else { ! if ( !sys_ucmd_msg ( _CMD_DEL_FC_IPOL, ! argv[0], ! strlen(argv[0]), ! fr)) ! frerr(fr, fr->ret, "Failed to delete internal policy(%s): %s", ! argv[0], ! fr->errmsg); } - #endif if (fr->ret != RET_OK) --- 3121,3127 ---- if (argc == 1) { ! if (!(pol = sys_ucmd_msg (_CMD_GET_FC_POL, argv[0], strlen(argv[0]),fr))) { ! frerr(fr, RET_ENOTFOUND,"[FC/policy name] \"%s\" does not exist\n", argv[0]); } if (fr->ret != RET_OK) *************** *** 3101,3118 **** if (modify != CBFROM_SYSTEM) { if ((fr->ret = saveconf(csm)) != RET_OK) { ! frerr(fr, fr->ret, ! "Cannot save configuration (%d)\n", fr->ret); return; } else { ! ! if ( !sys_ucmd_msg ( _CMD_DEL_FC_IPOL, ! argv[0], ! strlen(argv[0]), ! fr)) ! frerr(fr, fr->ret, ! "Failed to delete internal policy(%s): %s", ! argv[0], ! fr->errmsg); } } --- 3137,3150 ---- if (modify != CBFROM_SYSTEM) { if ((fr->ret = saveconf(csm)) != RET_OK) { ! frerr(fr, fr->ret, "Cannot save configuration (%d)\n", fr->ret); return; } else { ! if ( send_ipcmsg(IPCMTYPE_FC_DEL_IPOL, argv[0], ! strlen(argv[0]), fr) != RET_OK ) ! { ! frerr(fr, fr->ret, "%s\n", fr->errmsg); ! return; ! } } } Index: confutil.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/confutil.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** confutil.c 5 Mar 2006 01:11:00 -0000 1.4 --- confutil.c 6 Mar 2006 04:23:56 -0000 1.5 *************** *** 36,39 **** --- 36,40 ---- #include "confutil.h" #include "linklist.h" + #include "slog.h" #if !defined(TRUE) *************** *** 42,50 **** #endif extern sm_t *csm; #define FC_CNT(X) csm->fc_##X ##_cnt #define FC_OBJ(X, I) csm->fc_##X[I] #define FC_OBJ_NAME(X, I) csm->fc_##X[I].name ! extern sys_cmd_t cmdtab[]; extern sys_ucmd_t ucmdtab[]; --- 43,53 ---- #endif + extern list runpol_list; extern sm_t *csm; + #if 0 #define FC_CNT(X) csm->fc_##X ##_cnt #define FC_OBJ(X, I) csm->fc_##X[I] #define FC_OBJ_NAME(X, I) csm->fc_##X[I].name ! #endif extern sys_cmd_t cmdtab[]; extern sys_ucmd_t ucmdtab[]; *************** *** 62,74 **** char *name = (char *)arg; ! for ( i = 0 ; i < FC_CNT(net); i++) { ! if ( !strncmp (FC_OBJ_NAME(net, i), name, len)) { ! fr->ret = RET_OK; ! return &FC_OBJ(net, i); } } strcpy (fr->errmsg, "Can't found fc net"); ! fr->ret = RET_ENOTFOUND; return NULL; --- 65,82 ---- char *name = (char *)arg; ! out ("\n"); ! for ( i = 0 ; i < csm->fc_net_cnt; i++) { ! if ( !strcmp (csm->fc_net[i].name, name)) { ! ! if (fr) ! fr->ret = RET_OK; ! ! return &csm->fc_net[i]; } } strcpy (fr->errmsg, "Can't found fc net"); ! if (fr) ! fr->ret = RET_ENOTFOUND; return NULL; *************** *** 79,91 **** char *name = (char *)arg; ! for ( i = 0 ; i < FC_CNT(svc); i++) { ! if ( !strncmp (FC_OBJ_NAME(svc, i), name, len)) { ! fr->ret = RET_OK; ! return &FC_OBJ(svc, i); } } strcpy (fr->errmsg, "Can't found fc svc"); ! fr->ret = RET_ENOTFOUND; return NULL; } --- 87,106 ---- char *name = (char *)arg; ! out ("\n"); ! for ( i = 0 ; i < csm->fc_svc_cnt; i++) { ! if ( !strcmp (csm->fc_svc[i].name, name)) { ! ! if (fr) ! fr->ret = RET_OK; ! ! return &csm->fc_svc[i]; } } strcpy (fr->errmsg, "Can't found fc svc"); ! ! if (fr) ! fr->ret = RET_ENOTFOUND; ! return NULL; } *************** *** 95,107 **** char *name = (char *)arg; ! for ( i = 0 ; i < FC_CNT(fw); i++) { ! if ( !strncmp (FC_OBJ_NAME(fw, i), name, len)) { ! fr->ret = RET_OK; ! return &FC_OBJ(fw, i); } } strcpy (fr->errmsg, "Can't found fc fw"); ! fr->ret = RET_ENOTFOUND; return NULL; } --- 110,129 ---- char *name = (char *)arg; ! out ("\n"); ! for ( i = 0 ; i < csm->fc_fw_cnt; i++) { ! if ( !strcmp (csm->fc_fw[i].name, name)) { ! ! if (fr) ! fr->ret = RET_OK; ! ! return &csm->fc_fw[i]; } } strcpy (fr->errmsg, "Can't found fc fw"); ! ! if (fr) ! fr->ret = RET_ENOTFOUND; ! return NULL; } *************** *** 111,123 **** char *name = (char *)arg; ! for ( i = 0 ; i < FC_CNT(pol); i++) { ! if ( !strncmp (FC_OBJ_NAME(pol, i), name, len)) { ! fr->ret = RET_OK; ! return &FC_OBJ(pol, i); } } strcpy (fr->errmsg, "Can't found fc pol"); ! fr->ret = RET_ENOTFOUND; return NULL; } --- 133,153 ---- char *name = (char *)arg; ! 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)) { ! ! if (fr) ! fr->ret = RET_OK; ! ! out ("found: %s\n", csm->fc_pol[i].name); ! return &csm->fc_pol[i]; } } strcpy (fr->errmsg, "Can't found fc pol"); ! ! if (fr) ! fr->ret = RET_ENOTFOUND; ! return NULL; } *************** *** 145,148 **** --- 175,179 ---- fc_fw_t *fw ) { + out ("\n"); strcpy (c->polname, p->name); strcpy (c->msg.indev, sn->net_if); *************** *** 231,234 **** --- 262,266 ---- char *polname = (char *)arg; + out ("\n"); if (!(pol = sys_ucmd_msg (_CMD_GET_FC_POL, polname, *************** *** 237,240 **** --- 269,273 ---- return NULL; + out ("success get pol\n"); if (!(snet = sys_ucmd_msg (_CMD_GET_FC_NET, pol->snet, *************** *** 243,246 **** --- 276,280 ---- return NULL; + out ("success get snet: %s\n", snet->name); if (!(dnet = sys_ucmd_msg (_CMD_GET_FC_NET, pol->dnet, *************** *** 249,252 **** --- 283,287 ---- return NULL; + out ("success get dnet: %s\n", dnet->name); if (!(ssvc = sys_ucmd_msg (_CMD_GET_FC_SVC, pol->ssvc, *************** *** 255,258 **** --- 290,294 ---- return NULL; + out ("success get ssvc: %s\n", ssvc->name); if (!(dsvc = sys_ucmd_msg (_CMD_GET_FC_SVC, pol->dsvc, *************** *** 261,264 **** --- 297,301 ---- return NULL; + out ("success get dsvc: %s\n", dsvc->name); if (!(fw = sys_ucmd_msg (_CMD_GET_FC_FW, pol->fw, *************** *** 267,270 **** --- 304,308 ---- return NULL; + out ("success get fw: %s\n", fw->name); if ( parse_iprange (snet->addr, saddr, fr) != TRUE) { return NULL; *************** *** 274,281 **** if (!saddr_list) { strcpy(fr->errmsg, "failed to alloc saddr_list"); ! fr->ret = RET_EMALLOC; return NULL; } for ( i = saddr[0]; i <= saddr[1]; i++) for ( j = saddr[2]; j <= saddr[3]; j++) --- 312,322 ---- if (!saddr_list) { strcpy(fr->errmsg, "failed to alloc saddr_list"); ! ! if (fr) ! fr->ret = RET_EMALLOC; return NULL; } + out ("before extend saddr\n"); for ( i = saddr[0]; i <= saddr[1]; i++) for ( j = saddr[2]; j <= saddr[3]; j++) *************** *** 299,303 **** strcpy(fr->errmsg, "failed to alloc tmp saddr node"); ! fr->ret = RET_EMALLOC; return NULL; } --- 340,346 ---- strcpy(fr->errmsg, "failed to alloc tmp saddr node"); ! if (fr) ! fr->ret = RET_EMALLOC; ! return NULL; } *************** *** 313,320 **** if (!daddr_list) { strcpy(fr->errmsg, "failed to alloc daddr_list"); ! fr->ret = RET_EMALLOC; return NULL; } for ( i = daddr[0]; i <= daddr[1]; i++) for ( j = daddr[2]; j <= daddr[3]; j++) --- 356,367 ---- if (!daddr_list) { strcpy(fr->errmsg, "failed to alloc daddr_list"); ! ! if (fr) ! fr->ret = RET_EMALLOC; ! return NULL; } + out ("before extend daddr\n"); for ( i = daddr[0]; i <= daddr[1]; i++) for ( j = daddr[2]; j <= daddr[3]; j++) *************** *** 338,342 **** strcpy(fr->errmsg, "failed to alloc tmp daddr node"); ! fr->ret = RET_EMALLOC; return NULL; } --- 385,391 ---- strcpy(fr->errmsg, "failed to alloc tmp daddr node"); ! if (fr) ! fr->ret = RET_EMALLOC; ! return NULL; } *************** *** 345,348 **** --- 394,398 ---- } + out ("before LIST LOOP\n"); LIST_LOOP (saddr_list, sa, SAN) { LIST_LOOP (daddr_list, da, DAN) { *************** *** 356,364 **** p->msg.saddr = sa->addr; p->msg.daddr = da->addr; ! listnode_add (csm->fc_ipol_list, p); } } ! fr->ret = RET_OK; return polname; } --- 406,416 ---- p->msg.saddr = sa->addr; p->msg.daddr = da->addr; ! listnode_add (runpol_list, p); } } ! if (fr) ! fr->ret = RET_OK; ! return polname; } *************** *** 368,378 **** struct listnode *n; char *polname = (char *)arg; ! ! LIST_LOOP (csm->fc_ipol_list, p, n) { if (!strcmp (p->polname, polname)) { ! listnode_delete (csm->fc_ipol_list, p); } } fr->ret = RET_OK; return polname; --- 420,432 ---- 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; *************** *** 380,383 **** --- 434,444 ---- void * _dmp_fc_ipol ( void *arg, int len, frp_t fr) { + + return NULL; + } + + void * _apply_fc_ipol ( void *arg, int len, frp_t fr) { + + return NULL; } Index: conftab.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/conftab.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** conftab.c 5 Mar 2006 01:11:00 -0000 1.5 --- conftab.c 6 Mar 2006 04:23:56 -0000 1.6 *************** *** 106,109 **** --- 106,110 ---- { _CMD_DEL_FC_IPOL, _del_fc_ipol }, { _CMD_DMP_FC_IPOL, _dmp_fc_ipol }, + { _CMD_APPLY_FC_IPOL, _apply_fc_ipol }, {0}, }; |