📄 rsvp_specs.c
字号:
if ((!specp) || Obj_CType(specp) != ctype_FLOWSPEC_Intserv0) return; NTOH_IS_Main_Hdr(&specp->flow_body.spec_mh); if (Intserv_Obj_size(&specp->flow_body.spec_mh) != Obj_Length(specp)) return; if (!Intserv_Version_OK(&specp->flow_body.spec_mh)) return; sp = (IS_serv_hdr_t *) &specp->flow_body.spec_u; NTOH_IS_Serv_Hdr(sp); switch (sp->issh_service) { case GUARANTEED_SERV: {#if BYTE_ORDER == LITTLE_ENDIAN /* Avoid compiler warning msg */ Guar_flowspec_t *gp = (Guar_flowspec_t *) sp; /* Don't convert invalid fields */ if (gp->Gspec_T_flags & ISPH_FLG_INV || gp->Gspec_R_flags & ISPH_FLG_INV) return; NTOH_IS_Parm_Hdr(&gp->Guar_Tspec_hdr); NTOH_IS_Parm_Hdr(&gp->Guar_Rspec_hdr); NTOHF32(gp->Gspec_b); NTOHF32(gp->Gspec_r); NTOHF32(gp->Gspec_p); NTOH32(gp->Gspec_m); NTOH32(gp->Gspec_M); NTOHF32(gp->Gspec_R); NTOH32(gp->Gspec_S);#endif } break; case CONTROLLED_LOAD_SERV: {#if BYTE_ORDER == LITTLE_ENDIAN /* Avoid compiler warning msg */ CL_flowspec_t *clp = (CL_flowspec_t *) sp; /* Don't convert invalid fields */ if (clp->CLspec_flags & ISPH_FLG_INV) return; NTOH_IS_Parm_Hdr(&clp->CL_spec_parm_hdr); NTOHF32(clp->CLspec_b); NTOHF32(clp->CLspec_r); NTOHF32(clp->CLspec_p); NTOH32(clp->CLspec_m); NTOH32(clp->CLspec_M);#endif } break; default: break; }}/* * hton_flowspec(): Converts a flowspec in place from host byte * order into network byte order. */voidhton_flowspec(FLOWSPEC *specp) { IS_serv_hdr_t *sp; if ((!specp) || Obj_CType(specp) != ctype_FLOWSPEC_Intserv0) return; if (Intserv_Obj_size(&specp->flow_body.spec_mh) != Obj_Length(specp)) return; HTON_IS_Main_Hdr(&specp->flow_body.spec_mh); if (!Intserv_Version_OK(&specp->flow_body.spec_mh)) return; sp = (IS_serv_hdr_t *) &specp->flow_body.spec_u; HTON_IS_Serv_Hdr(sp); switch (sp->issh_service) { case GUARANTEED_SERV: {#if BYTE_ORDER == LITTLE_ENDIAN /* Avoid compiler warning msg */ Guar_flowspec_t *gp = (Guar_flowspec_t *) sp; /* Don't convert invalid fields */ if (gp->Gspec_T_flags & ISPH_FLG_INV || gp->Gspec_R_flags & ISPH_FLG_INV) return; HTON_IS_Parm_Hdr(&gp->Guar_Tspec_hdr); HTONF32(gp->Gspec_b); HTONF32(gp->Gspec_r); HTONF32(gp->Gspec_p); HTON32(gp->Gspec_m); HTON32(gp->Gspec_M); HTON_IS_Parm_Hdr(&gp->Guar_Rspec_hdr); HTONF32(gp->Gspec_R); HTON32(gp->Gspec_S);#endif } break; case CONTROLLED_LOAD_SERV: {#if BYTE_ORDER == LITTLE_ENDIAN /* Avoid compiler warning msg */ CL_flowspec_t *clp = (CL_flowspec_t *) sp; /* Don't convert invalid fields */ if (clp->CLspec_flags & ISPH_FLG_INV) return; HTON_IS_Parm_Hdr(&clp->CL_spec_parm_hdr); HTONF32(clp->CLspec_b); HTONF32(clp->CLspec_r); HTONF32(clp->CLspec_p); HTON32(clp->CLspec_m); HTON32(clp->CLspec_M);#endif } break; default: break; }}voidhton_tspec(SENDER_TSPEC *tspecp) { IS_serv_hdr_t *stp; if ((!tspecp) || Obj_CType(tspecp) != ctype_SENDER_TSPEC_CTYPE) return; if (Intserv_Obj_size(&tspecp->stspec_body.st_mh) != Obj_Length(tspecp)) return; HTON_IS_Main_Hdr(&tspecp->stspec_body.st_mh); if (!Intserv_Version_OK(&tspecp->stspec_body.st_mh)) return; stp = (IS_serv_hdr_t *) &tspecp->stspec_body.tspec_u; HTON_IS_Serv_Hdr(stp); switch (stp->issh_service) { case CONTROLLED_LOAD_SERV: /**** OBSOLETE ***/ case GENERAL_INFO: {#if BYTE_ORDER == LITTLE_ENDIAN /* Avoid compiler warning msg */ gen_Tspec_t *gp = (gen_Tspec_t *) stp; /* Don't convert invalid fields */ if (gp->gtspec_flags & ISPH_FLG_INV) return; HTON_IS_Parm_Hdr(&gp->gen_Tspec_parm_hdr); HTONF32(gp->gtspec_b); HTONF32(gp->gtspec_r); HTONF32(gp->gtspec_p); HTON32(gp->gtspec_m); HTON32(gp->gtspec_M);#endif } break; default: break; }}voidntoh_tspec(SENDER_TSPEC *tspecp) { IS_serv_hdr_t *stp; if ((!tspecp) || Obj_CType(tspecp) != ctype_SENDER_TSPEC_CTYPE) return; NTOH16(tspecp->stspec_body.st_mh.ismh_len32b); if (Intserv_Obj_size(&tspecp->stspec_body.st_mh) != Obj_Length(tspecp)) return; if (!Intserv_Version_OK(&tspecp->stspec_body.st_mh)) return; stp = (IS_serv_hdr_t *) &tspecp->stspec_body.tspec_u; NTOH_IS_Serv_Hdr(stp); switch (stp->issh_service) { case GENERAL_INFO: case CONTROLLED_LOAD_SERV: /**** OBSOLETE ***/ {#if BYTE_ORDER == LITTLE_ENDIAN /* Avoid compiler warning msg */ gen_Tspec_t *gp = (gen_Tspec_t *) stp; /* Don't convert invalid fields */ if (gp->gtspec_flags & ISPH_FLG_INV) return; NTOH_IS_Parm_Hdr(&gp->gen_Tspec_parm_hdr); NTOHF32(gp->gtspec_b); NTOHF32(gp->gtspec_r); NTOHF32(gp->gtspec_p); NTOH32(gp->gtspec_m); NTOH32(gp->gtspec_M);#endif } break; default: break; }}voidhton_adspec(ADSPEC *adsp) { IS_main_hdr_t *mhp = (IS_main_hdr_t *) Obj_data(adsp); IS_serv_hdr_t *shp = (IS_serv_hdr_t *) (mhp+1); IS_serv_hdr_t *lastshp; IS_parm_hdr_t *php, *lastphp, *cphp; lastshp = (IS_serv_hdr_t *) Next_Main_Hdr(mhp); while (shp < lastshp) { /* * For each service fragment... */ lastphp = (IS_parm_hdr_t *)Next_Serv_Hdr(shp); switch (shp->issh_service) { case GENERAL_INFO: php = (IS_parm_hdr_t *)(shp+1); break; case GUARANTEED_SERV: { Gads_parms_t *gap = (Gads_parms_t *) shp; if (shp->issh_len32b == 0) { php = (IS_parm_hdr_t *)(shp+1); break; } HTON_IS_Parm_Hdr(&gap->Gads_Ctot_hdr); HTON32(gap->Gads_Ctot); HTON_IS_Parm_Hdr(&gap->Gads_Dtot_hdr); HTON32(gap->Gads_Dtot); HTON_IS_Parm_Hdr(&gap->Gads_Csum_hdr); HTON32(gap->Gads_Csum); HTON_IS_Parm_Hdr(&gap->Gads_Dsum_hdr); HTON32(gap->Gads_Dsum); php = (IS_parm_hdr_t *)(gap+1); break; } case CONTROLLED_LOAD_SERV: php = (IS_parm_hdr_t *)(shp+1); break; default: /* XXX ?? */ break; } /* * Loop to convert general characterization parms, * either default or override. */ while (php < lastphp) { hton_genparm(php); php = Next_Parm_Hdr(cphp = php); HTON_IS_Parm_Hdr(cphp); } /* * Continue with next service fragment, if any... */ HTON_IS_Serv_Hdr(shp); shp = (IS_serv_hdr_t *)php; } HTON_IS_Main_Hdr(mhp);}voidntoh_adspec(ADSPEC *adsp) { IS_main_hdr_t *mhp = (IS_main_hdr_t *) Obj_data(adsp); IS_serv_hdr_t *shp = (IS_serv_hdr_t *) (mhp+1); IS_serv_hdr_t *lastshp; IS_parm_hdr_t *php, *lastphp; NTOH_IS_Main_Hdr(mhp); lastshp = (IS_serv_hdr_t *) Next_Main_Hdr(mhp); while (shp < lastshp) { /* * For each service fragment... */ NTOH_IS_Serv_Hdr(shp); lastphp = (IS_parm_hdr_t *)Next_Serv_Hdr(shp); switch (shp->issh_service) { case GENERAL_INFO: php = (IS_parm_hdr_t *)(shp+1); break; case GUARANTEED_SERV: { Gads_parms_t *gap = (Gads_parms_t *) shp; if (shp->issh_len32b == 0) { php = (IS_parm_hdr_t *)(shp+1); break; } NTOH_IS_Parm_Hdr(&gap->Gads_Ctot_hdr); NTOH32(gap->Gads_Ctot); NTOH_IS_Parm_Hdr(&gap->Gads_Dtot_hdr); NTOH32(gap->Gads_Dtot); NTOH_IS_Parm_Hdr(&gap->Gads_Csum_hdr); NTOH32(gap->Gads_Csum); NTOH_IS_Parm_Hdr(&gap->Gads_Dsum_hdr); NTOH32(gap->Gads_Dsum); php = (IS_parm_hdr_t *)(gap+1); break; } case CONTROLLED_LOAD_SERV: lastphp = (IS_parm_hdr_t *)Next_Serv_Hdr(shp); php = (IS_parm_hdr_t *)(shp+1); break; default: /* XXX ?? */ break; } /* * Loop to convert general characterization parms, * either default or override. */ while (php < lastphp) { NTOH_IS_Parm_Hdr(php); ntoh_genparm(php); php = Next_Parm_Hdr(php); } /* * Continue with next service fragment, if any... */ shp = (IS_serv_hdr_t *)php; }}voidhton_genparm(IS_parm_hdr_t *pp) { switch (pp->isph_parm_num) { case IS_WKP_HOP_CNT: case IS_WKP_MIN_LATENCY: case IS_WKP_COMPOSED_MTU: HTON32(*(u_int32_t *)(pp+1)); break; case IS_WKP_PATH_BW: HTONF32(*(float32_t *)(pp+1)); break; default: /* XXX ? */ break; }}voidntoh_genparm(IS_parm_hdr_t *pp) { switch (pp->isph_parm_num) { case IS_WKP_HOP_CNT: case IS_WKP_MIN_LATENCY: case IS_WKP_COMPOSED_MTU: NTOH32(*(u_int32_t *)(pp+1)); break; case IS_WKP_PATH_BW: NTOHF32(*(float32_t *)(pp+1)); break; default: /* XXX ? */ break; }}doublemath_log(double x){ return(log(x));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -