[Netadm-devel] gwc/gwclib confproc.c,1.14,1.15 conftab.c,1.6,1.7 confutil.c,1.6,1.7 sysipc.c,1.1.1.1
Status: Beta
Brought to you by:
linuxpark
From: linuxpark <lin...@us...> - 2006-03-07 04:45:13
|
Update of /cvsroot/netadm/gwc/gwclib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12643/gwclib Modified Files: confproc.c conftab.c confutil.c sysipc.c Log Message: ADD: ADD: cli command ( dump_fc_ipol : dump flow control internal policy) + confutil.c (dump_fc_ipol ()) MOD: integrage sys_ipc_e -> sys_ucmd_e MOD: vi tab modified (in .vimrc, ts=8, sw=2, sts=2) MOD: make 2 function as ipc library function ipc request function: send_ipcmsg () used by other process except gwcadmd ipc response function: send_rmsg : used by gwcadmd daemon Index: confproc.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/confproc.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** confproc.c 6 Mar 2006 14:16:05 -0000 1.14 --- confproc.c 7 Mar 2006 04:45:09 -0000 1.15 *************** *** 2852,2903 **** } - 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) --- 2852,2855 ---- *************** *** 3093,3097 **** else { if ( getpid() != getpidbyname("/proc", SZADMD) && ! send_ipcmsg(IPCMTYPE_FC_ADD_IPOL, argv[0], strlen(argv[0]), fr) != RET_OK ) { --- 3045,3049 ---- else { if ( getpid() != getpidbyname("/proc", SZADMD) && ! send_ipcmsg(_CMD_ADD_FC_IPOL, argv[0], strlen(argv[0]), fr) != RET_OK ) { *************** *** 3132,3136 **** { fc_pol_t *pol = NULL; - int i; int slot; --- 3084,3087 ---- *************** *** 3138,3142 **** 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]); } --- 3089,3094 ---- 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]); } *************** *** 3153,3161 **** 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 ) { --- 3105,3114 ---- 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(_CMD_DEL_FC_IPOL, argv[0], strlen(argv[0]), fr) != RET_OK ) { *************** *** 3174,3234 **** fc_apply(int argc, char *argv[], int modify, frp_t fr) { - kuio_msg_t msg; - int fd; - int idx; - int i; - int ret; - - /* snet/ssvc ----> dnet/dsvc (fw) - * IP, dev_idx / proto, port ----> IP, dev_idx / proto, port [fw(byte)] - * - * - IP (u32) - * - proto - * - port - * ip->protocol (struct iphdr *ip = (*pkt)->nh.iph ), pkt == sk_buff** - * - */ - if (argc == 0) { - fd = open(SZPFDEV, O_RDWR | O_NDELAY); - if (fd < 0) { - frerr(fr, RET_EOPEN, "Failed to open %s\n", SZPFDEV); - return; - } - - ioctl (fd, IOCTLPF_REFLESH, 0); - #if 0 - for (i = 0; i < csm->hpolcnt; i++) { - switch (csm->hostpol[i].flag) { - case BLOCK_HOST: - idx = IOCTLPF_REGISTER_SRCBLOCK; - break; - case MODIFY_SEQ: - idx = IOCTLPF_REGISTER_MODSEQ; - break; - } ! msg.ip = csm->hostpol[i].ip; ! msg.max_pktrate = csm->hostpol[i].max_pktrate; ! if ((ret = ioctl(fd, idx, &msg)) < 0) { ! if (errno != EBADSLT) { ! /* EBADSLT , slot error example no instance in module */ ! frerr(fr, RET_EIOCTL, ! "%s: Ioctl Failed [name:%s] [IP:%u.%u.%u.%u] " ! "[flag:%d] [rate:%d]\n", ! SZPFDEV, csm->hostpol[i].name, ! NIPQUAD(csm->hostpol[i].ip), ! csm->hostpol[i].flag, ! csm->hostpol[i].max_pktrate); ! close(fd); ! return; ! } ! } ! } ! #endif ! close(fd); ! } else { ! frerr(fr, RET_EUSAGE, "Usage:\n"); ! } } --- 3127,3172 ---- fc_apply(int argc, char *argv[], int modify, frp_t fr) { ! 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 { ! if (!sys_ucmd_msg ( _CMD_APPLY_FC_IPOL, NULL, 0, fr)) { ! out ("Failed to apply internal policies (%d): %s\n", ! fr->ret, fr->errmsg != NULL ? fr->errmsg : ""); ! } else { ! out ("Success to apply internal policies\n"); ! } ! } ! } else { ! frerr(fr, RET_EUSAGE, "Usage:\n"); ! } ! } ! void ! dump_fc_ipol(int argc, char *argv[], int modify, frp_t fr) ! { ! if (argc == 0) { ! if ( getpid() != getpidbyname("/proc", SZADMD) && ! send_ipcmsg(_CMD_DUMP_FC_IPOL, NULL, 0, fr) != RET_OK ){ ! frerr(fr, fr->ret, "Failed to dump internal policies (%d): %s\n", ! fr->ret, fr->errmsg != NULL ? fr->errmsg : ""); ! return; ! } ! else { ! if (!sys_ucmd_msg (_CMD_DUMP_FC_IPOL, NULL, 0, fr)) { ! out ("Failed to dump internal policies (%d): %s\n", ! fr->ret, fr->errmsg != NULL ? fr->errmsg : ""); ! } else { ! out ("Success to dump internal policies (%s)\n", SZIPOLDUMP); ! } ! } ! } else { ! frerr(fr, RET_EUSAGE, "Usage:\n"); ! } } Index: confutil.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/confutil.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** confutil.c 6 Mar 2006 14:16:05 -0000 1.6 --- confutil.c 7 Mar 2006 04:45:09 -0000 1.7 *************** *** 45,55 **** 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[]; void * sys_ucmd_msg (sys_ucmd_e cmd, void *arg, int len, frp_t fr) { --- 45,56 ---- extern list runpol_list; extern sm_t *csm; extern sys_cmd_t cmdtab[]; extern sys_ucmd_t ucmdtab[]; + extern sys_strmap_t map_truefalse[]; + extern sys_strmap_t map_nettype []; + extern sys_strmap_t map_prototype []; + extern sys_strmap_t map_icmptype []; + extern sys_strmap_t map_thput_unit []; + extern sys_strmap_t map_fc_rule []; void * sys_ucmd_msg (sys_ucmd_e cmd, void *arg, int len, frp_t fr) { *************** *** 458,466 **** } - void * _dmp_fc_ipol ( void *arg, int len, frp_t fr) { - - return NULL; - } - void * _apply_fc_ipol ( void *arg, int len, frp_t fr) { --- 459,462 ---- *************** *** 468,471 **** --- 464,510 ---- } + void * _dump_fc_ipol ( void *arg, int len, frp_t fr) { + fc_umsg_t *p; + struct listnode *n; + int i = 0; + FILE *fp; + struct in_addr saddr; + struct in_addr daddr; + + fp = fopen (SZIPOLDUMP, "w+"); + if (!fp) { + fr->ret = RET_EOPEN; + out ("Failed to open file (%s)\n", SZIPOLDUMP); + return NULL; + } + + /* TODO : more info */ + 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, + p->msg.indev, + 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, + p->msg.quota + ); + } + LIST_UNLOCK (runpol_list); + fclose (fp); + + /* nomeaning */ + return &saddr; + } + char * mapidtostr(sys_strmap_t * map, int id) Index: sysipc.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/sysipc.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** sysipc.c 30 Jan 2006 17:41:28 -0000 1.1.1.1 --- sysipc.c 7 Mar 2006 04:45:09 -0000 1.2 *************** *** 32,35 **** --- 32,37 ---- #include "sysshm.h" #include "confutil.h" + #include "slog.h" + #include "sysutil.h" extern int errno; *************** *** 162,163 **** --- 164,229 ---- } } + + + 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 _CMD_ADD_FC_IPOL: + + case _CMD_DEL_FC_IPOL: + + ipcmsg->len = len; + strcpy ((char *)ipcmsg->data, arg); + + break; + + case _CMD_APPLY_FC_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); + } + + 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; + } + + + int send_rmsg (int fd, int ret, char *emsg ) { + sys_ipc_ret_t ipc_ret, *ipcret = &ipc_ret; + int iret; + + ipcret->ret = ret; + if (emsg != NULL && strlen (emsg)) + strcpy (ipcret->errmsg, emsg); + + if ((iret = write (fd, (void *)ipcret, sizeof (sys_ipc_ret_t))) < 0 ) { + out("write error:%s\n", strerror(errno)); + return iret; + } + return RET_OK; + } Index: conftab.c =================================================================== RCS file: /cvsroot/netadm/gwc/gwclib/conftab.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** conftab.c 6 Mar 2006 04:23:56 -0000 1.6 --- conftab.c 7 Mar 2006 04:45:09 -0000 1.7 *************** *** 90,93 **** --- 90,94 ---- {CMD_DEL_FC_POL, "del_fc_pol", PR(del_fc_pol), INFO_CLI_DEL_FC_POL}, {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}, *************** *** 105,110 **** { _CMD_ADD_FC_IPOL, _add_fc_ipol }, { _CMD_DEL_FC_IPOL, _del_fc_ipol }, - { _CMD_DMP_FC_IPOL, _dmp_fc_ipol }, { _CMD_APPLY_FC_IPOL, _apply_fc_ipol }, {0}, }; --- 106,111 ---- { _CMD_ADD_FC_IPOL, _add_fc_ipol }, { _CMD_DEL_FC_IPOL, _del_fc_ipol }, { _CMD_APPLY_FC_IPOL, _apply_fc_ipol }, + { _CMD_DUMP_FC_IPOL, _dump_fc_ipol }, {0}, }; |