コード例 #1
0
int
vr_mpls_get(vr_mpls_req *req)
{
    int ret = 0;
    struct vr_nexthop *nh = NULL;
    struct vrouter *router;

    router = vrouter_get(req->mr_rid);
    if (!router || req->mr_label > (int)router->vr_max_labels) {
        ret = -ENODEV;
    } else {
        nh = vrouter_get_label(req->mr_rid, req->mr_label);
        if (!nh)
            ret = -ENOENT;
    }

    if (!ret)
        vr_mpls_make_req(req, nh, req->mr_label);
    else
        req = NULL;

    vr_message_response(VR_MPLS_OBJECT_ID, req, ret);

    return 0;
}
コード例 #2
0
ファイル: vr_mpls.c プロジェクト: ani-Avoir/contrail-vrouter
int
vr_mpls_get(vr_mpls_req *req)
{
    int ret = 0;
    struct vr_nexthop *nh = NULL;
    struct vrouter *router;

    router = vrouter_get(req->mr_rid);
    if (!router) {
        ret = -ENODEV;
        goto generate_response;
    }

    if (((unsigned int)req->mr_label >= router->vr_max_labels)) {
        ret = -EINVAL;
        goto generate_response;
    }

    nh = vrouter_get_label(req->mr_rid, req->mr_label);
    if (!nh) {
        ret = -ENOENT;
        goto generate_response;
    }

    vr_mpls_make_req(req, nh, req->mr_label);

generate_response:
    if (ret)
        req = NULL;

    vr_message_response(VR_MPLS_OBJECT_ID, req, ret);

    return 0;
}