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; }
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; }