}
static void
-do_flow_mod__(int argc OVS_UNUSED, char *argv[], uint16_t command)
+do_flow_mod_file__(int argc OVS_UNUSED, char *argv[], uint16_t command)
{
enum nx_flow_format flow_format;
struct list requests;
struct vconn *vconn;
+ FILE *file;
+
+ file = !strcmp(argv[2], "-") ? stdin : fopen(argv[2], "r");
+ if (file == NULL) {
+ ovs_fatal(errno, "%s: open", argv[2]);
+ }
list_init(&requests);
flow_format = set_initial_format_for_flow_mod(&requests);
- parse_ofp_flow_mod_str(&requests, &flow_format, argc > 2 ? argv[2] : "",
- command);
- check_final_format_for_flow_mod(flow_format);
-
open_vconn(argv[1], &vconn);
- transact_multiple_noreply(vconn, &requests);
+ while (parse_ofp_flow_mod_file(&requests, &flow_format, file, command)) {
+ check_final_format_for_flow_mod(flow_format);
+ transact_multiple_noreply(vconn, &requests);
+ }
vconn_close(vconn);
-}
-static void
-do_add_flow(int argc, char *argv[])
-{
- do_flow_mod__(argc, argv, OFPFC_ADD);
+ if (file != stdin) {
+ fclose(file);
+ }
}
static void
-do_add_flows(int argc OVS_UNUSED, char *argv[])
+do_flow_mod__(int argc, char *argv[], uint16_t command)
{
enum nx_flow_format flow_format;
struct list requests;
struct vconn *vconn;
- FILE *file;
- file = !strcmp(argv[2], "-") ? stdin : fopen(argv[2], "r");
- if (file == NULL) {
- ovs_fatal(errno, "%s: open", argv[2]);
+ if (argc > 2 && !strcmp(argv[2], "-")) {
+ do_flow_mod_file__(argc, argv, command);
+ return;
}
list_init(&requests);
flow_format = set_initial_format_for_flow_mod(&requests);
+ parse_ofp_flow_mod_str(&requests, &flow_format, argc > 2 ? argv[2] : "",
+ command);
+ check_final_format_for_flow_mod(flow_format);
+
open_vconn(argv[1], &vconn);
- while (parse_ofp_add_flow_file(&requests, &flow_format, file)) {
- check_final_format_for_flow_mod(flow_format);
- transact_multiple_noreply(vconn, &requests);
- }
+ transact_multiple_noreply(vconn, &requests);
vconn_close(vconn);
+}
- if (file != stdin) {
- fclose(file);
- }
+static void
+do_add_flow(int argc, char *argv[])
+{
+ do_flow_mod__(argc, argv, OFPFC_ADD);
+}
+
+static void
+do_add_flows(int argc, char *argv[])
+{
+ do_flow_mod_file__(argc, argv, OFPFC_ADD);
}
static void
}
list_init(&packets);
- while (parse_ofp_add_flow_file(&packets, &flow_format, file)) {
+ while (parse_ofp_flow_mod_file(&packets, &flow_format, file, OFPFC_ADD)) {
print_packet_list(&packets);
}
fclose(file);