| -- binary |
| 01 0e 00 70 12 34 56 78 |
| 00 10 00 02 00 03 01 23 |
| 45 67 89 ab cd ef 01 23 |
| 45 67 00 00 00 00 00 00 |
| 00 00 00 00 c0 a8 03 7f |
| ff ff ff ff 00 00 00 00 |
| 00 00 00 00 00 00 00 00 |
| 00 00 00 05 00 00 00 00 |
| 00 00 00 00 00 00 00 02 |
| 00 00 00 08 ff fb 00 00 |
| ff ff 00 10 00 00 23 20 |
| 00 12 00 00 00 00 00 00 |
| ff ff 00 10 00 5c 16 c7 |
| 00 00 00 02 00 00 00 00 |
| -- python |
| ofp.message.flow_add( |
| xid=0x12345678, |
| match=ofp.match( |
| wildcards=ofp.OFPFW_DL_VLAN|ofp.OFPFW_DL_VLAN_PCP, |
| in_port=3, |
| ipv4_src=0xc0a8037f, |
| ipv4_dst=0xffffffff, |
| eth_src=[0x01, 0x23, 0x45, 0x67, 0x89, 0xab], |
| eth_dst=[0xcd, 0xef, 0x01, 0x23, 0x45, 0x67]), |
| idle_timeout=5, |
| flags=ofp.OFPFF_CHECK_OVERLAP, |
| actions=[ |
| ofp.action.output(port=ofp.OFPP_FLOOD), |
| ofp.action.nicira_dec_ttl(), |
| ofp.action.bsn_set_tunnel_dst()]) |
| -- python pretty-printer |
| flow_add { |
| xid = 0x12345678, |
| match = match_v1 { |
| wildcards = OFPFW_DL_VLAN|OFPFW_DL_VLAN_PCP, |
| in_port = 3, |
| eth_src = 01:23:45:67:89:ab, |
| eth_dst = cd:ef:01:23:45:67, |
| vlan_vid = 0x0, |
| vlan_pcp = 0x0, |
| eth_type = 0x0, |
| ip_dscp = 0x0, |
| ip_proto = 0x0, |
| ipv4_src = 192.168.3.127, |
| ipv4_dst = 255.255.255.255, |
| tcp_src = 0x0, |
| tcp_dst = 0x0 |
| }, |
| cookie = 0x0, |
| idle_timeout = 0x5, |
| hard_timeout = 0x0, |
| priority = 0x0, |
| buffer_id = 0x0, |
| out_port = 0, |
| flags = 0x2, |
| actions = [ |
| output { port = OFPP_FLOOD, max_len = 0x0 }, |
| nicira_dec_ttl { }, |
| bsn_set_tunnel_dst { dst = 0x0 } |
| ] |
| } |
| -- c |
| obj = of_flow_add_new(OF_VERSION_1_0); |
| of_flow_add_xid_set(obj, 0x12345678); |
| of_flow_add_idle_timeout_set(obj, 5); |
| of_flow_add_flags_set(obj, 2); |
| { |
| of_match_t match = { OF_VERSION_1_0 }; |
| match.fields.in_port = 3; |
| match.fields.eth_src = (of_mac_addr_t) { { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab } }; |
| match.fields.eth_dst = (of_mac_addr_t) { { 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67 } }; |
| match.fields.ipv4_src = 0xc0a8037f; |
| match.fields.ipv4_dst = 0xffffffff; |
| OF_MATCH_MASK_IN_PORT_EXACT_SET(&match); |
| OF_MATCH_MASK_ETH_SRC_EXACT_SET(&match); |
| OF_MATCH_MASK_ETH_DST_EXACT_SET(&match); |
| //OF_MATCH_MASK_VLAN_VID_EXACT_SET(&match); |
| //OF_MATCH_MASK_VLAN_PCP_EXACT_SET(&match); |
| OF_MATCH_MASK_ETH_TYPE_EXACT_SET(&match); |
| OF_MATCH_MASK_IP_DSCP_EXACT_SET(&match); |
| OF_MATCH_MASK_IP_PROTO_EXACT_SET(&match); |
| OF_MATCH_MASK_IPV4_SRC_EXACT_SET(&match); |
| OF_MATCH_MASK_IPV4_DST_EXACT_SET(&match); |
| OF_MATCH_MASK_TCP_SRC_EXACT_SET(&match); |
| OF_MATCH_MASK_TCP_DST_EXACT_SET(&match); |
| of_flow_add_match_set(obj, &match); |
| } |
| { |
| of_list_action_t actions; |
| of_flow_add_actions_bind(obj, &actions); |
| { |
| of_action_t action; |
| of_action_output_init(&action.output, OF_VERSION_1_0, -1, 1); |
| of_list_action_append_bind(&actions, &action); |
| of_action_output_port_set(&action.output, OF_PORT_DEST_FLOOD); |
| } |
| { |
| of_action_t action; |
| of_action_nicira_dec_ttl_init(&action.nicira_dec_ttl, OF_VERSION_1_0, -1, 1); |
| of_list_action_append_bind(&actions, &action); |
| } |
| { |
| of_action_t action; |
| of_action_bsn_set_tunnel_dst_init(&action.bsn_set_tunnel_dst, OF_VERSION_1_0, -1, 1); |
| of_list_action_append_bind(&actions, &action); |
| } |
| } |