- case ODPAT_SET_VLAN_VID:
- ds_put_format(ds, "set_vlan(%"PRIu16")", ntohs(a->vlan_vid.vlan_vid));
- break;
- case ODPAT_SET_VLAN_PCP:
- ds_put_format(ds, "set_vlan_pcp(%"PRIu8")", a->vlan_pcp.vlan_pcp);
+ case ODPAT_SET_DL_TCI: {
+ int vid = vlan_tci_to_vid(a->dl_tci.tci);
+ int pcp = vlan_tci_to_pcp(a->dl_tci.tci);
+
+ ds_put_cstr(ds, "set_tci(");
+ switch (ntohs(a->dl_tci.mask)) {
+ case VLAN_VID_MASK:
+ ds_put_format(ds, "set_tci(vlan=%d)", vid);
+ break;
+ case VLAN_PCP_MASK:
+ ds_put_format(ds, "set_tci(pcp=%d)", pcp);
+ break;
+ case VLAN_VID_MASK | VLAN_PCP_MASK:
+ ds_put_format(ds, "set_tci(vlan=%d,pcp=%d)", vid, pcp);
+ break;
+ default:
+ ds_put_format(ds, "set_tci(tci=%04"PRIx16",mask=%04"PRIx16")",
+ ntohs(a->dl_tci.tci), ntohs(a->dl_tci.mask));
+ break;
+ }
+ }