/* * 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); }
syp_error control_wrap_set_facility(logger glogger, facility_t facility) { return set_facility(glogger, facility); }