diff options
Diffstat (limited to 'networking/nameif.c')
-rw-r--r-- | networking/nameif.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/networking/nameif.c b/networking/nameif.c index f3d333baf..506f4fa1c 100644 --- a/networking/nameif.c +++ b/networking/nameif.c | |||
@@ -160,21 +160,13 @@ int nameif_main(int argc, char **argv) | |||
160 | prepend_new_eth_table(&clist, ifname, *argv++); | 160 | prepend_new_eth_table(&clist, ifname, *argv++); |
161 | } | 161 | } |
162 | } else { | 162 | } else { |
163 | ifh = xfopen(fname, "r"); | 163 | struct parser_t parser; |
164 | while ((line = xmalloc_fgets(ifh)) != NULL) { | 164 | if (config_open(&parser, fname)) { |
165 | char *next; | 165 | char *tokens[2]; |
166 | 166 | while (config_read(&parser, tokens, 2, 2, " \t", '#')) | |
167 | line_ptr = skip_whitespace(line); | 167 | prepend_new_eth_table(&clist, tokens[0], tokens[1]); |
168 | if ((line_ptr[0] == '#') || (line_ptr[0] == '\n')) | 168 | config_close(&parser); |
169 | goto read_next_line; | ||
170 | next = skip_non_whitespace(line_ptr); | ||
171 | if (*next) | ||
172 | *next++ = '\0'; | ||
173 | prepend_new_eth_table(&clist, line_ptr, next); | ||
174 | read_next_line: | ||
175 | free(line); | ||
176 | } | 169 | } |
177 | fclose(ifh); | ||
178 | } | 170 | } |
179 | 171 | ||
180 | ctl_sk = xsocket(PF_INET, SOCK_DGRAM, 0); | 172 | ctl_sk = xsocket(PF_INET, SOCK_DGRAM, 0); |