diff options
Diffstat (limited to 'networking/libiproute/iprule.c')
-rw-r--r-- | networking/libiproute/iprule.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/networking/libiproute/iprule.c b/networking/libiproute/iprule.c index 4b3130307..d4cf2826c 100644 --- a/networking/libiproute/iprule.c +++ b/networking/libiproute/iprule.c | |||
@@ -155,11 +155,12 @@ static int print_rule(struct sockaddr_nl *who ATTRIBUTE_UNUSED, | |||
155 | } else if (r->rtm_type != RTN_UNICAST) | 155 | } else if (r->rtm_type != RTN_UNICAST) |
156 | fprintf(fp, "%s", rtnl_rtntype_n2a(r->rtm_type, b1, sizeof(b1))); | 156 | fprintf(fp, "%s", rtnl_rtntype_n2a(r->rtm_type, b1, sizeof(b1))); |
157 | 157 | ||
158 | fprintf(fp, "\n"); | 158 | fputc('\n', fp); |
159 | fflush(fp); | 159 | fflush(fp); |
160 | return 0; | 160 | return 0; |
161 | } | 161 | } |
162 | 162 | ||
163 | /* Return value becomes exitcode. It's okay to not return at all */ | ||
163 | static int iprule_list(int argc, char **argv) | 164 | static int iprule_list(int argc, char **argv) |
164 | { | 165 | { |
165 | struct rtnl_handle rth; | 166 | struct rtnl_handle rth; |
@@ -178,19 +179,18 @@ static int iprule_list(int argc, char **argv) | |||
178 | return 1; | 179 | return 1; |
179 | 180 | ||
180 | if (rtnl_wilddump_request(&rth, af, RTM_GETRULE) < 0) { | 181 | if (rtnl_wilddump_request(&rth, af, RTM_GETRULE) < 0) { |
181 | bb_perror_msg("Cannot send dump request"); | 182 | bb_perror_msg_and_die("cannot send dump request"); |
182 | return 1; | ||
183 | } | 183 | } |
184 | 184 | ||
185 | if (rtnl_dump_filter(&rth, print_rule, stdout, NULL, NULL) < 0) { | 185 | if (rtnl_dump_filter(&rth, print_rule, stdout, NULL, NULL) < 0) { |
186 | bb_error_msg("Dump terminated"); | 186 | bb_error_msg_and_die("dump terminated"); |
187 | return 1; | ||
188 | } | 187 | } |
189 | 188 | ||
190 | return 0; | 189 | return 0; |
191 | } | 190 | } |
192 | 191 | ||
193 | 192 | ||
193 | /* Return value becomes exitcode. It's okay to not return at all */ | ||
194 | static int iprule_modify(int cmd, int argc, char **argv) | 194 | static int iprule_modify(int cmd, int argc, char **argv) |
195 | { | 195 | { |
196 | int table_ok = 0; | 196 | int table_ok = 0; |
@@ -282,7 +282,8 @@ static int iprule_modify(int cmd, int argc, char **argv) | |||
282 | if (matches(*argv, "help") == 0) | 282 | if (matches(*argv, "help") == 0) |
283 | bb_show_usage(); | 283 | bb_show_usage(); |
284 | if (rtnl_rtntype_a2n(&type, *argv)) | 284 | if (rtnl_rtntype_a2n(&type, *argv)) |
285 | invarg("Failed to parse rule type", *argv); | 285 | // bogus-looking error message "invalid argument 'cannot parse rule type' to '<*argv>'" |
286 | invarg("cannot parse rule type", *argv); | ||
286 | req.r.rtm_type = type; | 287 | req.r.rtm_type = type; |
287 | } | 288 | } |
288 | argc--; | 289 | argc--; |
@@ -304,6 +305,7 @@ static int iprule_modify(int cmd, int argc, char **argv) | |||
304 | return 0; | 305 | return 0; |
305 | } | 306 | } |
306 | 307 | ||
308 | /* Return value becomes exitcode. It's okay to not return at all */ | ||
307 | int do_iprule(int argc, char **argv) | 309 | int do_iprule(int argc, char **argv) |
308 | { | 310 | { |
309 | static const char * const ip_rule_commands[] = | 311 | static const char * const ip_rule_commands[] = |
@@ -331,4 +333,3 @@ int do_iprule(int argc, char **argv) | |||
331 | } | 333 | } |
332 | return iprule_modify(cmd, argc-1, argv+1); | 334 | return iprule_modify(cmd, argc-1, argv+1); |
333 | } | 335 | } |
334 | |||