Changeset 7758fcc in rtems-libbsd


Ignore:
Timestamp:
Dec 17, 2013, 1:04:28 PM (5 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, 647dd08ae2aa69b935c2847ea450fb824322ecae, freebsd-9.3, c6261f97870562d4c797cfb1ff1ba0affb85a916
Children:
9449f15
Parents:
9cc83a7
git-author:
Sebastian Huber <sebastian.huber@…> (12/17/13 13:04:28)
git-committer:
Sebastian Huber <sebastian.huber@…> (01/30/14 15:23:04)
Message:

DHCPCD(8): Add MASTER_ONLY option

File:
1 edited

Legend:

Unmodified
Added
Removed
  • dhcpcd/dhcpcd.c

    r9cc83a7 r7758fcc  
    7272struct if_head *ifaces = NULL;
    7373char vendor[VENDORCLASSID_MAX_LEN];
     74#ifndef MASTER_ONLY
    7475int pidfd = -1;
     76#endif
    7577struct if_options *if_options = NULL;
    7678int ifac = 0;
     
    8082
    8183sigset_t dhcpcd_sigset;
     84#ifndef MASTER_ONLY
    8285const int handle_sigs[] = {
    8386        SIGALRM,
     
    8992        0
    9093};
     94#endif
    9195
    9296static char *cffile;
     97#ifndef MASTER_ONLY
    9398static char *pidfile;
     99#endif
    94100static int linkfd = -1;
    95101static char **ifv;
     
    98104static int margc;
    99105
     106#ifndef MASTER_ONLY
    100107static pid_t
    101108read_pid(void)
     
    113120        return pid;
    114121}
     122#endif
    115123
    116124static void
     
    137145}
    138146
     147#ifndef MASTER_ONLY
    139148static void
    140149free_globals(void)
     
    205214                syslog(LOG_INFO, "exited");
    206215}
     216#endif /* !MASTER_ONLY */
    207217
    208218/* ARGSUSED */
     
    831841}
    832842
     843#ifndef MASTER_ONLY
    833844/* ARGSUSED */
    834845static void
     
    928939        exit(EXIT_FAILURE);
    929940}
     941#endif /* MASTER_ONLY */
    930942
    931943int
     
    10731085}
    10741086
     1087#ifndef MASTER_ONLY
    10751088static int
    10761089signal_init(void (*func)(int, siginfo_t *, void *), sigset_t *oldset)
     
    10951108        return 0;
    10961109}
     1110#endif
    10971111
    10981112#ifdef __rtems__
     
    11201134{
    11211135        struct interface *ifp;
     1136        int opt, oi = 0, i;
     1137#ifndef MASTER_ONLY
    11221138        uint16_t family = 0;
    1123         int opt, oi = 0, sig = 0, i, control_fd;
     1139        int sig = 0, control_fd;
    11241140        size_t len;
    11251141        pid_t pid;
     1142#endif
    11261143        struct timespec ts;
    11271144        struct utsname utn;
     
    11321149        setlogmask(LOG_UPTO(LOG_INFO));
    11331150
     1151#ifndef MASTER_ONLY
    11341152        /* Test for --help and --version */
    11351153        if (argc > 1) {
     
    11421160                }
    11431161        }
     1162#endif
    11441163
    11451164        platform = hardware_platform();
     
    11531172                    "%s-%s", PACKAGE, VERSION);
    11541173
     1174#ifndef MASTER_ONLY
    11551175        i = 0;
     1176#endif
    11561177        while ((opt = getopt_long(argc, argv, IF_OPTS, cf_options, &oi)) != -1)
    11571178        {
    11581179                switch (opt) {
     1180#ifndef MASTER_ONLY
    11591181                case '4':
    11601182                        family = AF_INET;
     
    11631185                        family = AF_INET6;
    11641186                        break;
     1187#endif
    11651188                case 'f':
    11661189                        cffile = optarg;
    11671190                        break;
     1191#ifndef MASTER_ONLY
    11681192                case 'g':
    11691193                        sig = SIGUSR1;
     
    11871211                        i = 3;
    11881212                        break;
     1213#endif
    11891214                case '?':
    11901215                        usage();
     
    12021227                exit(EXIT_FAILURE);
    12031228        }
     1229#ifndef MASTER_ONLY
    12041230        if (i == 3) {
    12051231                printf("Interface options:\n");
     
    12221248                exit(EXIT_SUCCESS);
    12231249        }
     1250#endif /* !MASTER_ONLY */
    12241251        options = if_options->options;
     1252#ifndef MASTER_ONLY
    12251253        if (i != 0) {
    12261254                if (i == 1)
     
    12311259                options &= ~DHCPCD_DAEMONISE;
    12321260        }
     1261#endif
    12331262
    12341263#ifdef THERE_IS_NO_FORK
     
    12381267        if (options & DHCPCD_DEBUG)
    12391268                setlogmask(LOG_UPTO(LOG_DEBUG));
     1269#ifndef MASTER_ONLY
    12401270        if (options & DHCPCD_QUIET) {
    12411271                i = open(_PATH_DEVNULL, O_RDWR);
     
    12641294                }
    12651295        }
     1296#else
     1297        options |= DHCPCD_MASTER;
     1298#endif
    12661299
    12671300        if (chdir("/") == -1)
    12681301                syslog(LOG_ERR, "chdir `/': %m");
     1302#ifndef MASTER_ONLY
    12691303        atexit(cleanup);
    12701304
     
    13651399                }
    13661400        }
     1401#endif /* !MASTER_ONLY */
    13671402
    13681403        syslog(LOG_INFO, "version " VERSION " starting");
     
    13731408#endif
    13741409
     1410#ifndef MASTER_ONLY
    13751411        /* Save signal mask, block and redirect signals to our handler */
    13761412        if (signal_init(handle_signal, &dhcpcd_sigset) == -1) {
     
    13831419                        syslog(LOG_ERR, "control_start: %m");
    13841420        }
     1421#endif
    13851422
    13861423        if (open_sockets() == -1) {
Note: See TracChangeset for help on using the changeset viewer.