Mercurial > hg > dhcpcd
changeset 2203:a402f9e802a6 draft
Fix multiple arping options
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Fri, 13 Dec 2013 09:35:35 +0000 |
| parents | 2a43815d2098 |
| children | cc598e8e72b0 |
| files | if-options.c |
| diffstat | 1 files changed, 18 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/if-options.c Fri Dec 13 09:11:42 2013 +0000 +++ b/if-options.c Fri Dec 13 09:35:35 2013 +0000 @@ -1039,16 +1039,25 @@ break; #ifdef INET case O_ARPING: - if (parse_addr(&addr, NULL, arg) != 0) - return -1; - naddr = realloc(ifo->arping, - sizeof(in_addr_t) * (ifo->arping_len + 1)); - if (naddr == NULL) { - syslog(LOG_ERR, "%s: %m", __func__); - return -1; + while (arg && *arg != '\0') { + fp = strwhite(arg); + if (fp) + *fp++ = '\0'; + if (parse_addr(&addr, NULL, arg) != 0) + return -1; + naddr = realloc(ifo->arping, + sizeof(in_addr_t) * (ifo->arping_len + 1)); + if (naddr == NULL) { + syslog(LOG_ERR, "%s: %m", __func__); + return -1; + } + ifo->arping = naddr; + ifo->arping[ifo->arping_len++] = addr.s_addr; + if (fp) + arg = strskipwhite(fp); + else + arg = NULL; } - ifo->arping = naddr; - ifo->arping[ifo->arping_len++] = addr.s_addr; break; case O_DESTINATION: if (make_option_mask(dhcp_opts, dhcp_opts_len,
