⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rsvp_specs.c

📁 radius协议源码÷The Radius Stack will connect to a Radius Server. This stack implementation is built upo
💻 C
📖 第 1 页 / 共 3 页
字号:
	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 + -