Example #1
0
File: nield.c Project: yumkam/nield
/*
 * set options
 */
int set_options(int argc, char *argv[])
{
    int opt;

    /* set default value */
    strcpy(log_file, LOG_FILE_DEFAULT);
    strcpy(dbg_file, DEBUG_FILE_DEFAULT);

    /* parse options */
    while((opt = getopt(argc, argv, "vhp:l:s:L:d:46inarft")) != EOF) {
        switch(opt) {
            case 'v':
                fprintf(stderr, "version: %s\n", VERSION);
                return(-1);
            case 'h':
                fprintf(stderr, "usage: nield %s\n", NIELD_USAGE);
                return(-1);
            case 'p':
                strncpy(lock_file, optarg, MAX_STR_SIZE);
                break;
            case 'l':
                if(strlen(optarg) < MAX_STR_SIZE) {
                    strcpy(log_file, optarg);
                } else {
                    fprintf(stderr, "error: %s: log file path is longer than %d byte\n",
                        __func__, MAX_STR_SIZE);
                    return(-1);
                }
                log_opts |= L_LOCAL;
                break;
            case 'L':
                if(strlen(optarg) < MAX_STR_SIZE) {
                    facility = set_facility(optarg);
                    if(facility < 0) {
                        fprintf(stderr, "error: %s: unknown syslog facility \"%s\"\n",
                            __func__, optarg);
                        return(-1);
                    }
                } else {
                    fprintf(stderr, "error: %s: syslog facility is longer than %d byte\n",
                        __func__, MAX_STR_SIZE);
                    return(-1);
                }
                log_opts |= L_SYSLOG;
                break;
            case 'd':
                if(strlen(optarg) < MAX_STR_SIZE) {
                    strcpy(dbg_file, optarg);
                } else {
                    fprintf(stderr, "error: %s: debug file path is longer than %d byte\n",
                        __func__, MAX_STR_SIZE);
                    return(-1);
                }
                log_opts |= L_DEBUG;
                break;
            case 's':
                if(strlen(optarg) < MAX_STR_SIZE) {
                    rcv_buflen = atoi(optarg);
                } else {
                    fprintf(stderr, "error: %s: receive buffer size is longer than %d byte\n",
                        __func__, MAX_STR_SIZE);
                    return(-1);
                }
                break;
            case '4':
                msg_opts |= M_IPV4;
                break;
            case '6':
                msg_opts |= M_IPV6;
                break;
            case 'i':
                msg_opts |= M_LINK;
                break;
            case 'n':
                msg_opts |= M_NEIGH;
                break;
            case 'a':
                msg_opts |= M_IFADDR;
                break;
            case 'r':
                msg_opts |= M_ROUTE;
                break;
            case 'f':
                msg_opts |= M_RULE;
                break;
            case 't':
                msg_opts |= M_TC;
                break;
            case 'x':
                msg_opts |= M_XFRM;
            default:
                return(-1);
        }
    }

    if(!(log_opts & L_LOCAL) && !(log_opts & L_SYSLOG)) {
        log_opts |= L_LOCAL;
    }

    return(0);
}
Example #2
0
syp_error control_wrap_set_facility(logger glogger, facility_t facility)
{
	return set_facility(glogger, facility);
}