-- binary
04 04 # version, type
00 34 # length
12 34 56 78 # xid
00 5c 16 c7 # experimenter
00 00 00 30 # subtype
00 14 # table_id
00 00 # pad
fe dc ba 98 76 54 32 10 ff ee cc bb aa 99 00 00 # checksum
ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 00 # checksum_mask
-- python
ofp.message.bsn_gentable_clear_request(
    xid=0x12345678,
    table_id=20,
    checksum=     0xFEDCBA9876543210FFEECCBBAA990000,
    checksum_mask=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000)
-- java
builder.setXid(0x12345678)
    .setChecksum(U128.of(0xFEDCBA9876543210L, 0xFFEECCBBAA990000L))
    .setChecksumMask(U128.of(0xFFFFFFFFFFFFFFFFL, 0xFFFFFFFFFFFF0000L))
    .setTableId(GenTableId.of(20))
-- c
obj = of_bsn_gentable_clear_request_new(OF_VERSION_1_3);
of_bsn_gentable_clear_request_xid_set(obj, 0x12345678);
of_bsn_gentable_clear_request_table_id_set(obj, 20);
{
    of_checksum_128_t checksum = { 0xFEDCBA9876543210L, 0xFFEECCBBAA990000L };
    of_bsn_gentable_clear_request_checksum_set(obj, checksum);
}
{
    of_checksum_128_t checksum_mask = { 0xFFFFFFFFFFFFFFFFL, 0xFFFFFFFFFFFF0000L };
    of_bsn_gentable_clear_request_checksum_mask_set(obj, checksum_mask);
}
