- char *opt, *opteq;
- int val;
-
- opts = xstrdup(opts);
-
- for (opt = strtok(opts, ","); opt; opt = strtok(NULL, ",")) {
- if ((opteq = strchr(opt, '='))) {
- val = atoi(opteq + 1);
- *opteq = '\0';
- if (strcmp(opt, "bg") == 0)
- bg_opt++;
- else if (strcmp(opt, "retry") == 0)
- retry_opt = val;
- else if (strcmp(opt, "addr") == 0)
- addr_opt++;
- else if (strcmp(opt, "clientaddr") == 0)
- ca_opt++;
- } else {
- if (strcmp(opt, "bg") == 0)
- bg_opt++;
- }
- }
+ char new_option[24];
+
+ po_remove_all(options, "addr");
+
+ snprintf(new_option, sizeof(new_option) - 1,
+ "addr=%s", inet_ntoa(saddr->sin_addr));