-- binary
06 12 # version, type
00 40 # length
12 34 56 78 # xid
00 01 # multipart message type (OFPMP_FLOW(_DESC))
00 01 # flags
00 00 00 00 # pad
01 # tableId
00 00 00 # pad
00 00 00 04 # out_port
00 00 00 01 # out_group
00 00 00 00 # pad
fe dc ba 98 76 54 32 10 # cookie
ff 00 ff 00 ff 00 ff 00 # cookie_mask
00 01 # match.type
00 10 # match.length
80 00 01 08 # match.oxm_list[0].type_len - IN_PORT
00 00 00 04 # match.oxm_list[0].value
00 00 00 05 # match.oxm_list[0].mask

-- java
builder
        .setXid(0x12345678)
        .setFlags(ImmutableSet.<OFStatsRequestFlags>of(OFStatsRequestFlags.REQ_MORE))
        .setTableId(TableId.of(1))
        .setOutPort(OFPort.of(4))
        .setOutGroup(OFGroup.of(1))
        .setCookie(U64.parseHex("FEDCBA9876543210"))
        .setCookieMask(U64.parseHex("FF00FF00FF00FF00"))
        .setMatch(
        factory.buildMatch()
            .setMasked(MatchField.IN_PORT, OFPort.of(4), OFPort.of(5))
            .build())
        .build()
