projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Avoid inserting duplicate iptables rules when restarting vswitch.
[openvswitch]
/
utilities
/
ovs-ofctl.c
diff --git
a/utilities/ovs-ofctl.c
b/utilities/ovs-ofctl.c
index 5f9c830833c35be7552833c97e2b1f5c9f5d9c5c..7d3b7fbeead0415e9d552b7853035d8229124862 100644
(file)
--- a/
utilities/ovs-ofctl.c
+++ b/
utilities/ovs-ofctl.c
@@
-172,6
+172,7
@@
usage(void)
" add-flows SWITCH FILE add flows from FILE\n"
" mod-flows SWITCH FLOW modify actions of matching FLOWs\n"
" del-flows SWITCH [FLOW] delete matching FLOWs\n"
" add-flows SWITCH FILE add flows from FILE\n"
" mod-flows SWITCH FLOW modify actions of matching FLOWs\n"
" del-flows SWITCH [FLOW] delete matching FLOWs\n"
+ " replace-flows SWITCH FILE replace flows with those in FILE\n"
" monitor SWITCH [MISSLEN] print packets received from SWITCH\n"
"\nFor OpenFlow switches and controllers:\n"
" probe VCONN probe whether VCONN is up\n"
" monitor SWITCH [MISSLEN] print packets received from SWITCH\n"
"\nFor OpenFlow switches and controllers:\n"
" probe VCONN probe whether VCONN is up\n"
@@
-262,12
+263,11
@@
open_vconn(const char *name, struct vconn **vconnp)
static void *
alloc_stats_request(size_t body_len, uint16_t type, struct ofpbuf **bufferp)
{
static void *
alloc_stats_request(size_t body_len, uint16_t type, struct ofpbuf **bufferp)
{
- struct ofp_stats_request *rq;
- rq = make_openflow((offsetof(struct ofp_stats_request, body)
- + body_len), OFPT_STATS_REQUEST, bufferp);
+ struct ofp_stats_msg *rq;
+ rq = make_openflow(sizeof *rq + body_len, OFPT_STATS_REQUEST, bufferp);
rq->type = htons(type);
rq->flags = htons(0);
rq->type = htons(type);
rq->flags = htons(0);
- return rq
->body
;
+ return rq
+ 1
;
}
static void
}
static void
@@
-314,12
+314,12
@@
dump_stats_transaction(const char *vconn_name, struct ofpbuf *request)
run(vconn_recv_block(vconn, &reply), "OpenFlow packet receive failed");
recv_xid = ((struct ofp_header *) reply->data)->xid;
if (send_xid == recv_xid) {
run(vconn_recv_block(vconn, &reply), "OpenFlow packet receive failed");
recv_xid = ((struct ofp_header *) reply->data)->xid;
if (send_xid == recv_xid) {
- struct ofp_stats_
reply *osr
;
+ struct ofp_stats_
msg *osm
;
ofp_print(stdout, reply->data, reply->size, verbosity + 1);
ofp_print(stdout, reply->data, reply->size, verbosity + 1);
- os
r = ofpbuf_at(reply, 0, sizeof *osr
);
- done = !os
r || !(ntohs(osr
->flags) & OFPSF_REPLY_MORE);
+ os
m = ofpbuf_at(reply, 0, sizeof *osm
);
+ done = !os
m || !(ntohs(osm
->flags) & OFPSF_REPLY_MORE);
} else {
VLOG_DBG("received reply with xid %08"PRIx32" "
"!= expected %08"PRIx32, recv_xid, send_xid);
} else {
VLOG_DBG("received reply with xid %08"PRIx32" "
"!= expected %08"PRIx32, recv_xid, send_xid);
@@
-658,7
+658,7
@@
do_flow_mod__(int argc, char *argv[], uint16_t command)
flow_mod_table_id = false;
parse_ofp_flow_mod_str(&requests, &flow_format, &flow_mod_table_id,
flow_mod_table_id = false;
parse_ofp_flow_mod_str(&requests, &flow_format, &flow_mod_table_id,
- argc > 2 ? argv[2] : "", command);
+ argc > 2 ? argv[2] : "", command
, false
);
check_final_format_for_flow_mod(flow_format);
open_vconn(argv[1], &vconn);
check_final_format_for_flow_mod(flow_format);
open_vconn(argv[1], &vconn);
@@
-1035,7
+1035,7
@@
read_flows_from_file(const char *filename, struct classifier *cls, int index)
struct flow_mod fm;
ofpbuf_init(&actions, 64);
struct flow_mod fm;
ofpbuf_init(&actions, 64);
- parse_ofp_str(&fm, &actions, ds_cstr(&s));
+ parse_ofp_str(&fm, &actions, ds_cstr(&s)
, true
);
version = xmalloc(sizeof *version);
version->cookie = fm.cookie;
version = xmalloc(sizeof *version);
version->cookie = fm.cookie;
@@
-1089,7
+1089,7
@@
read_flows_from_switch(struct vconn *vconn, enum nx_flow_format flow_format,
recv_xid = ((struct ofp_header *) reply->data)->xid;
if (send_xid == recv_xid) {
const struct ofputil_msg_type *type;
recv_xid = ((struct ofp_header *) reply->data)->xid;
if (send_xid == recv_xid) {
const struct ofputil_msg_type *type;
- const struct ofp_stats_
reply *osr
;
+ const struct ofp_stats_
msg *osm
;
enum ofputil_msg_code code;
ofputil_decode_msg_type(reply->data, &type);
enum ofputil_msg_code code;
ofputil_decode_msg_type(reply->data, &type);
@@
-1101,8
+1101,8
@@
read_flows_from_switch(struct vconn *vconn, enum nx_flow_format flow_format,
verbosity + 1));
}
verbosity + 1));
}
- os
r
= reply->data;
- if (!(os
r
->flags & htons(OFPSF_REPLY_MORE))) {
+ os
m
= reply->data;
+ if (!(os
m
->flags & htons(OFPSF_REPLY_MORE))) {
done = true;
}
done = true;
}
@@
-1308,7
+1308,7
@@
do_parse_flow(int argc OVS_UNUSED, char *argv[])
list_init(&packets);
parse_ofp_flow_mod_str(&packets, &flow_format, &flow_mod_table_id,
list_init(&packets);
parse_ofp_flow_mod_str(&packets, &flow_format, &flow_mod_table_id,
- argv[1], OFPFC_ADD);
+ argv[1], OFPFC_ADD
, false
);
print_packet_list(&packets);
}
print_packet_list(&packets);
}