Ejemplo n.º 1
0
void
of_oxm_wire_object_id_set(of_object_t *obj, of_object_id_t id)
{
    uint32_t type_len;
    int wire_type;
    of_wire_buffer_t *wbuf;

    ASSERT(OF_OXM_VALID_ID(id));

    /* Read-modify-write */
    _GET_OXM_TYPE_LEN(obj, &type_len, wbuf);
    wire_type = of_object_to_wire_type(id, obj->version);
    ASSERT(wire_type >= 0);
    OF_OXM_MASKED_TYPE_SET(type_len, wire_type);
    of_wire_buffer_u32_set(wbuf, 
           OF_OBJECT_ABSOLUTE_OFFSET(obj, OXM_HDR_OFFSET), type_len);
}
Ejemplo n.º 2
0
void
of_oxm_wire_object_id_set(of_object_t *obj, of_object_id_t id)
{
    uint32_t type_len;
    int wire_type;
    of_wire_buffer_t *wbuf;

    ASSERT(OF_OXM_VALID_ID(id));

    /* Read-modify-write */
    _GET_OXM_TYPE_LEN(obj, &type_len, wbuf);

    switch (id) {
    case OF_OXM_BSN_IN_PORTS_128:
        type_len = 0x00030000 | (type_len & 0xff);
        break;
    case OF_OXM_BSN_IN_PORTS_128_MASKED:
        type_len = 0x00030100 | (type_len & 0xff);
        break;
    case OF_OXM_BSN_LAG_ID:
        type_len = 0x00030200 | (type_len & 0xff);
        break;
    case OF_OXM_BSN_LAG_ID_MASKED:
        type_len = 0x00030300 | (type_len & 0xff);
        break;
    case OF_OXM_BSN_VRF:
        type_len = 0x00030400 | (type_len & 0xff);
        break;
    case OF_OXM_BSN_VRF_MASKED:
        type_len = 0x00030500 | (type_len & 0xff);
        break;
    case OF_OXM_BSN_GLOBAL_VRF_ALLOWED:
        type_len = 0x00030600 | (type_len & 0xff);
        break;
    case OF_OXM_BSN_GLOBAL_VRF_ALLOWED_MASKED:
        type_len = 0x00030700 | (type_len & 0xff);
        break;
    case OF_OXM_BSN_L3_INTERFACE_CLASS_ID:
        type_len = 0x00030800 | (type_len & 0xff);
        break;
    case OF_OXM_BSN_L3_INTERFACE_CLASS_ID_MASKED:
        type_len = 0x00030900 | (type_len & 0xff);
        break;
    case OF_OXM_BSN_L3_SRC_CLASS_ID:
        type_len = 0x00030a00 | (type_len & 0xff);
        break;
    case OF_OXM_BSN_L3_SRC_CLASS_ID_MASKED:
        type_len = 0x00030b00 | (type_len & 0xff);
        break;
    case OF_OXM_BSN_L3_DST_CLASS_ID:
        type_len = 0x00030c00 | (type_len & 0xff);
        break;
    case OF_OXM_BSN_L3_DST_CLASS_ID_MASKED:
        type_len = 0x00030d00 | (type_len & 0xff);
        break;
    default:
        wire_type = of_object_to_wire_type(id, obj->version);
        ASSERT(wire_type >= 0);
        type_len = 0x80000000 | (wire_type << 8) | (type_len & 0xff);
        break;
    }

    of_wire_buffer_u32_set(wbuf, 
           OF_OBJECT_ABSOLUTE_OFFSET(obj, OXM_HDR_OFFSET), type_len);
}