[Netadm-devel] gwc/gwclib confio.c,1.5,1.6 confproc.c,1.16,1.17 conftab.c,1.7,1.8 confutil.c,1.8,1.9
Status: Beta
Brought to you by:
linuxpark
From: linuxpark <lin...@us...> - 2006-03-08 15:30:09
|
Update of /cvsroot/netadm/gwc/gwclib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12429/gwclib Modified Files: confio.c confproc.c conftab.c confutil.c Log Message: MOD: FIX: inet_ntoa can't print u32 data in in_addr.s_addr so replaced it with NIPQUAD() DEL: remove redundant two list in _add_fc_ipol. DEL: auto_test() in confproc.h confproc.c message.h sysipc.h script/install.sh Index: confio.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/confio.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** confio.c 5 Mar 2006 01:11:00 -0000 1.5 --- confio.c 8 Mar 2006 15:29:55 -0000 1.6 *************** *** 218,223 **** } else if (!strcmp(cmd, "[fc_pol]")) { add_fc_pol(argc, argv, 0, &fr); - } else if (!strcmp(cmd, "[auto_test]")) { - set_auto(argc, argv, 0, &fr); }else { out("Unknown section \"%s\"\n", tmp); --- 218,221 ---- *************** *** 412,434 **** mapidtostr (map_fc_rule, csm->fc_pol[i].rule)); } ! #if 0 ! /* host policy */ ! for (i = 0; i < csm->hpolcnt; i++) { ! struct in_addr s; ! s.s_addr = csm->hostpol[i].ip; ! prenc(fp, "[%s]\t%s\t%s\t%d\t%d\n", STR_HOST_POLICY, ! csm->hostpol[i].name, ! inet_ntoa(s), ! csm->hostpol[i].flag, csm->hostpol[i].max_pktrate); ! } ! #endif ! /* auto test */ ! prenc(fp, "[%s]\t%d\t%d\t%d\t%d\t%d\t%d\n", STR_AUTO_TEST, ! csm->auto_test.sint_1, ! csm->auto_test.sint_2, ! csm->auto_test.mint_1, ! csm->auto_test.mint_2, ! csm->auto_test.ilevel, csm->auto_test.cnum); ! fsync(fileno(fp)); fclose(fp); --- 410,414 ---- mapidtostr (map_fc_rule, csm->fc_pol[i].rule)); } ! fsync(fileno(fp)); fclose(fp); Index: confproc.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/confproc.c,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** confproc.c 7 Mar 2006 17:04:51 -0000 1.16 --- confproc.c 8 Mar 2006 15:29:55 -0000 1.17 *************** *** 2956,2966 **** "[FC/destination service protocol name] \"%s\" does not exists\n",argv[5]); - if ( ssvc->proto != dsvc->proto ) - frerr(fr, RET_EINTERNAL, - "both source service proto and destination service proto must be same but" - " source service proto \"%s\" and destination service proto \"%s\"\n", - mapidtostr (map_prototype, ssvc->proto), - mapidtostr(map_prototype, dsvc->proto)); - /* fw */ if (!str_nospace(argv[6])) --- 2956,2959 ---- *************** *** 3016,3022 **** pol->name, csm->fc_pol[i].name); } ! if (fr->ret != RET_OK) return; for (slot = 0, i = 0; i < csm->fc_pol_cnt; i++) { --- 3009,3024 ---- pol->name, csm->fc_pol[i].name); } ! if (fr->ret != RET_OK) return; + + if ( ssvc->proto != dsvc->proto ) { + frerr(fr, RET_EINTERNAL, + "both source service proto and destination service proto must be same but" + " source service proto \"%s\" and destination service proto \"%s\"\n", + mapidtostr (map_prototype, ssvc->proto), + mapidtostr(map_prototype, dsvc->proto)); + return; + } for (slot = 0, i = 0; i < csm->fc_pol_cnt; i++) { *************** *** 3172,3376 **** } } - - void - list_auto(int argc, char *argv[], int modify, frp_t fr) - { - int len; - int n = 0; - - fr->islist = 1; - - if (argc != 0) { - frerr(fr, RET_EUSAGE, "Usage: \n"); - fr->rows = -1; - return; - } - - len = (OL / 2 + OL / 2 + OL / 2 + OL / 2 + OL / 4 + OL); - fr->p = (char *) malloc(len); - if (!fr->p) { - frerr(fr, RET_EMALLOC, "Cannot allocate memory for %d bytes\n", - len); - fr->rows = -1; - return; - } - - if (csm->auto_test.sint_1 < MIN_AUTO_SINT || - csm->auto_test.sint_1 > MAX_AUTO_SINT) - goto NOVALID; - - if (csm->auto_test.sint_2 < MIN_AUTO_SINT || - csm->auto_test.sint_2 > MAX_AUTO_SINT) - goto NOVALID; - - if (csm->auto_test.mint_1 < MIN_AUTO_MINT || - csm->auto_test.mint_1 > MAX_AUTO_MINT) - goto NOVALID; - - if (csm->auto_test.mint_2 < MIN_AUTO_MINT || - csm->auto_test.mint_2 > MAX_AUTO_MINT) - goto NOVALID; - - if (csm->auto_test.ilevel != AUTO_FROMMIN && - csm->auto_test.ilevel != AUTO_FROMMAX) - goto NOVALID; - - if (csm->auto_test.cnum < MIN_AUTO_CNUM || - csm->auto_test.cnum > MAX_AUTO_CNUM) - goto NOVALID; - - n += 1 + sprintf(&fr->p[n], "%d", csm->auto_test.sint_1); - n += 1 + sprintf(&fr->p[n], "%d", csm->auto_test.sint_2); - n += 1 + sprintf(&fr->p[n], "%d", csm->auto_test.mint_1); - n += 1 + sprintf(&fr->p[n], "%d", csm->auto_test.mint_2); - n += 1 + sprintf(&fr->p[n], "%d", csm->auto_test.ilevel); - n += 1 + sprintf(&fr->p[n], "%d", csm->auto_test.cnum); - - fr->cols = 6; - fr->rows = 1; - fr->len = n; - return; - - NOVALID: - fr->rows = 0; - } - - void - set_auto(int argc, char *argv[], int modify, frp_t fr) - { - sys_autoconf_t autoconfig, *pac = &autoconfig; - - if (argc == 6) { - - if (!str_isdigit(argv[0])) { - frerr(fr, RET_EUSAGE, - "[stop interval 1(sec)] you must enter a valid decimal number (%s)\n", - argv[0]); - } - - if (atoi(argv[0]) < MIN_AUTO_SINT - || atoi(argv[0]) > MAX_AUTO_SINT) { - frerr(fr, RET_EUSAGE, - "[stop interval 1(sec)] the value you enter(%s) is over or below than limit" - "(min(%d), max(%d))\n", argv[0], MIN_AUTO_SINT, - MAX_AUTO_SINT); - } else - pac->sint_1 = atoi(argv[0]); - - if (!str_isdigit(argv[1])) { - frerr(fr, RET_EUSAGE, - "[stop interval 2(sec)] you must enter a valid decimal number (%s)\n", - argv[1]); - } - - if (atoi(argv[1]) < MIN_AUTO_SINT - || atoi(argv[1]) > MAX_AUTO_SINT) { - frerr(fr, RET_EUSAGE, - "[stop interval 2(sec)] the value you enter(%s) is over or below than limit" - "(min(%d), max(%d))\n", argv[1], MIN_AUTO_SINT, - MAX_AUTO_SINT); - } else - pac->sint_2 = atoi(argv[1]); - - if (!str_isdigit(argv[2])) { - frerr(fr, RET_EUSAGE, - "[moving interval 1(sec)] you must enter a valid decimal number (%s)\n", - argv[2]); - } - - if (atoi(argv[2]) < MIN_AUTO_SINT - || atoi(argv[2]) > MAX_AUTO_SINT) { - frerr(fr, RET_EUSAGE, - "[moving interval 1(sec)] the value you enter(%s) is over or below than limit" - "(min(%d), max(%d))\n", argv[2], MIN_AUTO_MINT, - MAX_AUTO_MINT); - } else - pac->mint_1 = atoi(argv[2]); - - if (!str_isdigit(argv[3])) { - frerr(fr, RET_EUSAGE, - "[moving interval 2(sec)] you must enter a valid decimal number (%s)\n", - argv[3]); - } - - if (atoi(argv[3]) < MIN_AUTO_SINT - || atoi(argv[3]) > MAX_AUTO_SINT) { - frerr(fr, RET_EUSAGE, - "[moving interval 2(sec)] the value you enter(%s) is over or below than limit" - "(min(%d), max(%d))\n", argv[3], MIN_AUTO_MINT, - MAX_AUTO_MINT); - } else - pac->mint_2 = atoi(argv[3]); - - if (!str_isdigit(argv[4])) { - frerr(fr, RET_EUSAGE, - "[init state (0: from min, 1: from max)] you must enter a valid decimal number (%s)\n", - argv[4]); - } - - if (atoi(argv[4]) != AUTO_FROMMIN - && atoi(argv[4]) != AUTO_FROMMAX) { - frerr(fr, RET_EUSAGE, - "[init state (0: from min, 1: from max)] you must enter a valid decimal number (%s)\n", - argv[4]); - } else - pac->ilevel = atoi(argv[4]); - - if (!str_isdigit(argv[5])) { - frerr(fr, RET_EUSAGE, - "[number of cycle] you must enter a valid decimal number (%s)\n", - argv[5]); - } - - if (atoi(argv[5]) < MIN_AUTO_CNUM - || atoi(argv[5]) > MAX_AUTO_CNUM) { - frerr(fr, RET_EUSAGE, - "[number of cycle] the value you enter(%s) is over or below than limit" - "(min(%d), max(%d))\n", argv[5], MIN_AUTO_CNUM, - MAX_AUTO_CNUM); - } else - pac->cnum = atoi(argv[5]); - - if (fr->ret != RET_OK) { - return; - } - - memcpy(&csm->auto_test, pac, sizeof (sys_autoconf_t)); - if ((fr->ret = saveconf(csm) != RET_OK)) { - frerr(fr, fr->ret, "Cannot save configuration (%d)\n", - fr->ret); - return; - } - - } else { - frerr(fr, RET_EUSAGE, - "Usage: [stop interval 1 (sec)] [stop interval 2 (sec)] " - "[moving interval 1 (sec)] [moving interval 2 (sec)]" - "[init state ( 0 : from minimum signal, 1 : from maxinum signal )]" - "[number of cycle]\n"); - } - } - - void - auto_apply(int argc, char *argv[], int modify, frp_t fr) - { - int fd; - char cmd[MINBUF]; - - /* Consider apply_pkg as list because it will return with the result */ - if ((fd = sys_ipcconn()) < 0) { - frerr(fr, RET_EWRITE, "Cannot connect to apcadmd: %s", - strerror(errno)); - return; - } - - strcpy(cmd, "auto_apply"); - if (write(fd, &cmd, sizeof (cmd)) < 0) { - frerr(fr, RET_EWRITE, "Cannot write to apcadmd: %s", - strerror(errno)); - return; - } - - close(fd); - return; - } --- 3174,3175 ---- Index: conftab.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/conftab.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** conftab.c 7 Mar 2006 04:45:09 -0000 1.7 --- conftab.c 8 Mar 2006 15:29:55 -0000 1.8 *************** *** 91,97 **** {CMD_FC_APPLY, "fc_apply", PR(fc_apply), INFO_CLI_FC_APPLY}, {CMD_DUMP_FC_IPOL, "dump_fc_ipol", PR(dump_fc_ipol), INFO_CLI_DUMP_FC_IPOL}, - {CMD_LIST_AUTO, "list_auto", PR(list_auto), INFO_CLI_LIST_AUTO}, - {CMD_SET_AUTO, "set_auto", PR(set_auto), INFO_CLI_SET_AUTO}, - {CMD_AUTO_APPLY, "auto_apply", PR(auto_apply), INFO_CLI_AUTO_APPLY}, {0} , --- 91,94 ---- Index: confutil.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/confutil.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** confutil.c 7 Mar 2006 17:04:51 -0000 1.8 --- confutil.c 8 Mar 2006 15:29:55 -0000 1.9 *************** *** 228,234 **** - 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. --- 228,231 ---- *************** *** 243,422 **** */ void * _add_fc_ipol ( void *arg, int len, frp_t fr) { ! fc_umsg_t *p; /* node which include new vals */ ! fc_pol_t *pol; ! fc_net_t *snet; ! fc_net_t *dnet; ! fc_svc_t *ssvc; ! fc_svc_t *dsvc; ! fc_fw_t *fw; ! unsigned char saddr[8]; ! unsigned char daddr[8]; ! list saddr_list; ! list daddr_list; ! struct listnode *SAN; ! struct listnode *DAN; ! int addr; ! int i; ! int j; ! int k; ! int l; ! tmp_addr_t *sa; ! tmp_addr_t *da; ! char *polname = (char *)arg; ! ! if (!(pol = sys_ucmd_msg (_CMD_GET_FC_POL, ! polname, ! strlen(polname), ! fr))) ! return NULL; ! if (!(snet = sys_ucmd_msg (_CMD_GET_FC_NET, ! pol->snet, ! strlen(pol->snet), ! fr))) ! return NULL; ! ! if (!(dnet = sys_ucmd_msg (_CMD_GET_FC_NET, ! pol->dnet, ! strlen(pol->dnet), ! fr))) ! return NULL; ! ! if (!(ssvc = sys_ucmd_msg (_CMD_GET_FC_SVC, ! pol->ssvc, ! strlen(pol->ssvc), ! fr))) ! return NULL; ! ! if (!(dsvc = sys_ucmd_msg (_CMD_GET_FC_SVC, ! pol->dsvc, ! strlen(pol->dsvc), ! fr))) ! return NULL; ! ! if (!(fw = sys_ucmd_msg (_CMD_GET_FC_FW, ! pol->fw, ! strlen(pol->fw), ! fr))) ! return NULL; ! if ( parse_iprange (snet->addr, saddr, fr) != TRUE) { ! return NULL; ! } ! ! saddr_list = list_new (); ! if (!saddr_list) { ! strcpy(fr->errmsg, "failed to alloc saddr_list"); ! ! if (fr) ! fr->ret = RET_EMALLOC; ! return NULL; ! } ! saddr_list->del = destroy_resource; ! for ( i = saddr[0]; i <= saddr[1]; i++) ! for ( j = saddr[2]; j <= saddr[3]; j++) ! for ( k = saddr[4]; k <= saddr[5]; k++) ! for ( l = saddr[6]; l <= saddr[7]; l++) { ! /* LITTLE ENDIAN */ ! addr = 0; ! addr = l; ! addr <<= 8; ! ! addr |= k; ! addr <<= 8; ! addr |= j; ! addr <<= 8; ! addr |= i; ! sa = (tmp_addr_t*)malloc (sizeof(tmp_addr_t)); ! if (!sa) { ! strcpy(fr->errmsg, ! "failed to alloc tmp saddr node"); ! if (fr) ! fr->ret = RET_EMALLOC; ! return NULL; ! } ! sa->addr = addr; ! listnode_add (saddr_list, sa); ! } ! ! if ( parse_iprange (dnet->addr, daddr, fr) != TRUE) { ! return NULL; ! } ! ! daddr_list = list_new (); ! if (!daddr_list) { ! strcpy(fr->errmsg, "failed to alloc daddr_list"); ! if (fr) ! fr->ret = RET_EMALLOC; ! ! return NULL; ! } ! ! daddr_list->del = destroy_resource; ! for ( i = daddr[0]; i <= daddr[1]; i++) ! for ( j = daddr[2]; j <= daddr[3]; j++) ! for ( k = daddr[4]; k <= daddr[5]; k++) ! for ( l = daddr[6]; l <= daddr[7]; l++) { ! /* LITTLE ENDIAN */ ! addr = 0; ! addr = l; ! addr <<= 8; ! ! addr |= k; ! addr <<= 8; ! ! addr |= j; ! addr <<= 8; ! ! addr |= i; ! ! da = (tmp_addr_t*)malloc (sizeof(tmp_addr_t)); ! if (!da) { ! strcpy(fr->errmsg, ! "failed to alloc tmp daddr node"); ! if (fr) ! fr->ret = RET_EMALLOC; ! return NULL; ! } ! da->addr = addr; ! listnode_add (daddr_list, da); ! } ! 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; ! } ! update_ipol (p, pol, snet, dnet, ssvc, dsvc, fw); ! p->msg.saddr = sa->addr; ! p->msg.daddr = da->addr; ! LIST_LOCK (runpol_list); ! listnode_add (runpol_list, p); ! LIST_UNLOCK (runpol_list); } } ! if (fr) ! fr->ret = RET_OK; ! ! list_delete_all_node (saddr_list); ! list_delete_all_node (daddr_list); ! return polname; } --- 240,358 ---- */ void * _add_fc_ipol ( void *arg, int len, frp_t fr) { ! fc_umsg_t *p; /* node which include new vals */ ! fc_pol_t *pol; ! fc_net_t *snet; ! fc_net_t *dnet; ! fc_svc_t *ssvc; ! fc_svc_t *dsvc; ! fc_fw_t *fw; ! unsigned char saddr[8]; ! unsigned char daddr[8]; ! #ifdef DEBUG ! struct listnode *snode; ! #endif ! int t_saddr; ! int t_daddr; ! int si; ! int sj; ! int sk; ! int sl; ! int di; ! int dj; ! int dk; ! int dl; ! char *polname = (char *)arg; ! struct in_addr saddr2; ! struct in_addr daddr2; ! if (!(pol = sys_ucmd_msg (_CMD_GET_FC_POL, polname, strlen(polname), fr))) ! return NULL; ! if (!(snet = sys_ucmd_msg (_CMD_GET_FC_NET, pol->snet, strlen(pol->snet), fr))) ! return NULL; ! if (!(dnet = sys_ucmd_msg (_CMD_GET_FC_NET, pol->dnet, strlen(pol->dnet), fr))) ! return NULL; ! if (!(ssvc = sys_ucmd_msg (_CMD_GET_FC_SVC, pol->ssvc, strlen(pol->ssvc), fr))) ! return NULL; ! if (!(dsvc = sys_ucmd_msg (_CMD_GET_FC_SVC, pol->dsvc, strlen(pol->dsvc), fr))) ! return NULL; ! if (!(fw = sys_ucmd_msg (_CMD_GET_FC_FW, pol->fw, strlen(pol->fw), fr))) ! return NULL; ! if ( parse_iprange (snet->addr, saddr, fr) != TRUE) ! return NULL; ! if ( parse_iprange (dnet->addr, daddr, fr) != TRUE) ! return NULL; ! /* LITTLE ENDIAN */ ! LIST_LOCK (runpol_list); ! for ( si = saddr[0]; si <= saddr[1]; si++) ! for ( sj = saddr[2]; sj <= saddr[3]; sj++) ! for ( sk = saddr[4]; sk <= saddr[5]; sk++) ! for ( sl = saddr[6]; sl <= saddr[7]; sl++) { ! t_saddr = 0; ! t_saddr = sl; ! t_saddr <<= 8; ! t_saddr |= sk; ! t_saddr <<= 8; ! t_saddr |= sj; ! t_saddr <<= 8; ! t_saddr |= si; ! saddr2.s_addr = t_saddr; ! #ifdef DEBUG ! out ("snet: %s\n", inet_ntoa(saddr2)); ! #endif ! for ( di = daddr[0]; di <= daddr[1]; di++) ! for ( dj = daddr[2]; dj <= daddr[3]; dj++) ! for ( dk = daddr[4]; dk <= daddr[5]; dk++) ! for ( dl = daddr[6]; dl <= daddr[7]; dl++) { ! t_daddr = 0; ! t_daddr = dl; ! t_daddr <<= 8; ! t_daddr |= dk; ! t_daddr <<= 8; ! t_daddr |= dj; ! t_daddr <<= 8; ! t_daddr |= di; ! daddr2.s_addr = t_daddr; ! #ifdef DEBUG ! out ("dnet: %s\n", inet_ntoa(daddr2)); ! #endif ! 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; ! } ! return NULL; ! } ! p->msg.saddr = t_saddr; ! p->msg.daddr = t_daddr; ! update_ipol (p, pol, snet, dnet, ssvc, dsvc, fw); ! listnode_add (runpol_list, p); ! } + } + LIST_UNLOCK (runpol_list); ! #ifdef DEBUG ! LIST_LOOP (runpol_list, p, snode) { ! out ("ok-snet: %u.%u.%u.%u, ok-dnet: %u.%u.%u.%u\n", ! NIPQUAD(p->msg.saddr), NIPQUAD(p->msg.daddr)); ! } ! #endif ! ! if (fr) ! fr->ret = RET_OK; ! ! return polname; } *************** *** 460,465 **** void * _apply_fc_ipol ( void *arg, int len, frp_t fr) { ! ! return NULL; } --- 396,402 ---- void * _apply_fc_ipol ( void *arg, int len, frp_t fr) { ! ! /* TODO */ ! return NULL; } *************** *** 469,474 **** int i = 0; FILE *fp; - struct in_addr saddr; - struct in_addr daddr; fp = fopen (SZIPOLDUMP, "w+"); --- 406,409 ---- *************** *** 482,489 **** LIST_LOCK (runpol_list); LIST_LOOP(runpol_list, p, n) { - saddr.s_addr = p->msg.saddr; - daddr.s_addr = p->msg.daddr; ! fprintf(fp, "%d'th %s: indev:%s, proto:%s, rule:%s, %s:%d/%d--->%s:%d/%d, quota:%d\n", ++i, p->polname, --- 417,423 ---- LIST_LOCK (runpol_list); LIST_LOOP(runpol_list, p, n) { ! fprintf(fp, "%d'th %s: indev:%s proto:%s rule:%s" ! " %u.%u.%u.%u:%d/%d --> %u.%u.%u.%u:%d/%d quota:%d\n", ++i, p->polname, *************** *** 491,498 **** mapidtostr(map_prototype, p->msg.protocol), mapidtostr(map_fc_rule, p->msg.rule), ! inet_ntoa (saddr), p->msg.smask, p->msg.sport, ! inet_ntoa (daddr), p->msg.dmask, p->msg.dport, --- 425,432 ---- mapidtostr(map_prototype, p->msg.protocol), mapidtostr(map_fc_rule, p->msg.rule), ! NIPQUAD (p->msg.saddr), p->msg.smask, p->msg.sport, ! NIPQUAD (p->msg.daddr), p->msg.dmask, p->msg.dport, |