-- binary
04 0c # version, type
00 50 # length
12 34 56 78 # xid
02 # reason
00 00 00 00 00 00 00 # pad
00 00 00 04 # port_no
00 00 00 00 # pad
01 02 03 04 05 06 # hw_addr
00 00 # pad
66 6f 6f 00 00 00 00 00 # name
00 00 00 00 00 00 00 00 # ...
00 00 00 24 # config
00 00 00 02 # state
00 00 00 01 # curr
00 00 00 02 # advertised
00 00 00 04 # supported
00 00 00 08 # peer
00 00 00 0a # curr_speed
00 00 00 14 # max_speed
-- python
ofp.message.port_status(
    xid=0x12345678,
    reason=ofp.OFPPR_MODIFY,
    desc=ofp.port_desc(
        port_no=4,
        hw_addr=[1,2,3,4,5,6],
        name="foo",
        config=ofp.OFPPC_NO_FWD|ofp.OFPPC_NO_RECV,
        state=ofp.OFPPS_BLOCKED,
        curr=ofp.OFPPF_10MB_HD,
        advertised=ofp.OFPPF_10MB_FD,
        supported=ofp.OFPPF_100MB_HD,
        peer=ofp.OFPPF_100MB_FD,
        curr_speed=10,
        max_speed=20))
-- c
obj = of_port_status_new(OF_VERSION_1_3);
of_port_status_xid_set(obj, 0x12345678);
of_port_status_reason_set(obj, OF_PORT_CHANGE_REASON_MODIFY);
{
    of_object_t desc;
    of_port_status_desc_bind(obj, &desc);
    of_port_desc_port_no_set(&desc, 4);
    of_mac_addr_t hw_addr = { { 1, 2, 3, 4, 5, 6 } };
    of_port_desc_hw_addr_set(&desc, hw_addr);
    of_port_name_t name = "foo";
    of_port_desc_name_set(&desc, name);
    of_port_desc_config_set(&desc, OF_PORT_CONFIG_FLAG_NO_FWD|OF_PORT_CONFIG_FLAG_NO_RECV);
    of_port_desc_state_set(&desc, OF_PORT_STATE_FLAG_BLOCKED);
    of_port_desc_curr_set(&desc, OF_PORT_FEATURE_FLAG_10MB_HD);
    of_port_desc_advertised_set(&desc, OF_PORT_FEATURE_FLAG_10MB_FD);
    of_port_desc_supported_set(&desc, OF_PORT_FEATURE_FLAG_100MB_HD);
    of_port_desc_peer_set(&desc, OF_PORT_FEATURE_FLAG_100MB_FD);
    of_port_desc_curr_speed_set(&desc, 10);
    of_port_desc_max_speed_set(&desc, 20);
}
