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

📄 rsvp_objs.c

📁 radius协议源码÷The Radius Stack will connect to a Radius Server. This stack implementation is built upo
💻 C
📖 第 1 页 / 共 2 页
字号:
		case ctype_SESSION_ipv4:		case ctype_SESSION_ipv4GPI:			sprintf(buffer,"%s/%hu[%d]",net_inaddr_host(				(char *) &session->sess4_addr,AF_INET),				ntoh16(session->sess4_port),				session->sess4_prot);			return(buffer);#ifdef	USE_IPV6		case ctype_SESSION_ipv6:		case ctype_SESSION_ipv6GPI:			sprintf(buffer,"%s/%hu[%d]",net_inaddr_host(				(char *) &session->sess6_addr,AF_INET6),				ntoh16(session->sess6_port),				session->sess6_prot);			return(buffer);#endif	/* USE_IPV6 */		default:			return(NULL);	}}intsession_multicast(SESSION *session){	if (Obj_Class(session) != class_SESSION)		return(FALSE);	switch(Obj_CType(session)) {		case ctype_SESSION_ipv4:		case ctype_SESSION_ipv4GPI:			return(IN_IS_ADDR_MULTICAST(&session->sess4_addr));#ifdef	USE_IPV6		case ctype_SESSION_ipv6:		case ctype_SESSION_ipv6GPI:			return(IN6_IS_ADDR_MULTICAST(&session->sess6_addr));#endif	/* USE_IPV6 */		default:			return(FALSE);	}}u_int16_tsession_get_port(SESSION *session){	if (Obj_Class(session) != class_SESSION)		return(0);	switch(Obj_CType(session)) {		case ctype_SESSION_ipv4:		case ctype_SESSION_ipv4GPI:			return(session->sess4_port);#ifdef	USE_IPV6		case ctype_SESSION_ipv6:		case ctype_SESSION_ipv6GPI:			return(session->sess6_port);#endif	/* USE_IPV6 */		default:			return(0);	}}intsession_set_port(SESSION *session,u_int16_t port){	if (Obj_Class(session) != class_SESSION)		return(FALSE);	switch(Obj_CType(session)) {		case ctype_SESSION_ipv4:		case ctype_SESSION_ipv4GPI:			session->sess4_port = port;			return(TRUE);#ifdef	USE_IPV6		case ctype_SESSION_ipv6:		case ctype_SESSION_ipv6GPI:			session->sess6_port = port;			return(TRUE);#endif	/* USE_IPV6 */		default:			return(FALSE);	}}u_charsession_get_flags(SESSION *session){	if (Obj_Class(session) != class_SESSION)		return(0);	switch(Obj_CType(session)) {		case ctype_SESSION_ipv4:		case ctype_SESSION_ipv4GPI:			return(session->sess4_flgs);#ifdef	USE_IPV6		case ctype_SESSION_ipv6:		case ctype_SESSION_ipv6GPI:			return(session->sess6_flgs);#endif	/* USE_IPV6 */		default:			return(0);	}}intsession_set_flags(SESSION *session,u_char flags){	if (Obj_Class(session) != class_SESSION)		return(FALSE);	switch(Obj_CType(session)) {		case ctype_SESSION_ipv4:		case ctype_SESSION_ipv4GPI:			session->sess4_flgs = flags;			return(TRUE);#ifdef	USE_IPV6		case ctype_SESSION_ipv6:		case ctype_SESSION_ipv6GPI:			session->sess6_flgs = flags;			return(TRUE);#endif	/* USE_IPV6 */		default:			return(FALSE);	}}intsession_create(SESSION *session,net_addr *addr,u_char protid,	u_char flags,int gpi){	switch (NET_GET_TYPE(addr)) {		case NET_ADDR_IPv4:			if (gpi) {				Init_Object(session,SESSION,SESSION_ipv4GPI);			}			else {				Init_Object(session,SESSION,SESSION_ipv4);			}			session->sess4_addr = NET_GET_ADDR_IPv4(addr);			session->sess4_port = hton16(0);			session->sess4_prot = protid;			session->sess4_flgs = flags;			return(TRUE);		case NET_ADDR_UDP_IPv4:			if (gpi) {				Init_Object(session,SESSION,SESSION_ipv4GPI);			}			else {				Init_Object(session,SESSION,SESSION_ipv4);			}			session->sess4_addr = NET_GET_ADDR_UDP_IPv4(addr)						.sin_addr;			session->sess4_port = NET_GET_ADDR_UDP_IPv4(addr)						.sin_port;			session->sess4_prot = protid;			session->sess4_flgs = flags;			return(TRUE);#ifdef	USE_IPV6		case NET_ADDR_IPv6:			if (gpi) {				Init_Object(session,SESSION,SESSION_ipv6GPI);			}			else {				Init_Object(session,SESSION,SESSION_ipv6);			}			session->sess6_addr = NET_GET_ADDR_IPv6(addr);			session->sess6_port = hton16(0);			session->sess6_prot = protid;			session->sess6_flgs = flags;			return(TRUE);		case NET_ADDR_UDP_IPv6:			if (gpi) {				Init_Object(session,SESSION,SESSION_ipv6GPI);			}			else {				Init_Object(session,SESSION,SESSION_ipv6);			}			session->sess6_addr = NET_GET_ADDR_UDP_IPv6(addr)						.sin6_addr;			session->sess6_port = NET_GET_ADDR_UDP_IPv6(addr)						.sin6_port;			session->sess6_prot = protid;			session->sess6_flgs = flags;			return(TRUE);#endif	/* USE_IPV6 */		default:			return(FALSE);	}}intconfirm_if_create(CONFIRM *confirm,net_if *inf){	net_addr *addr;	switch(NET_GET_TYPE(inf)) {		case NET_IF_PHY:			addr = &NET_GET_IF_PHY_ADDR(inf);			break;		case NET_IF_VIF:			addr = &NET_GET_IF_VIF_ADDR(inf);			break;		default:			return(FALSE);	}	switch (NET_GET_TYPE(addr)) {		case NET_ADDR_IPv4:			Init_Object(confirm,CONFIRM,CONFIRM_ipv4);			confirm->conf4_addr = NET_GET_ADDR_IPv4(addr);			return(TRUE);#ifdef	USE_IPV6		case NET_ADDR_IPv6:			Init_Object(confirm,CONFIRM,CONFIRM_ipv6);			confirm->conf6_addr = NET_GET_ADDR_IPv6(addr);			return(TRUE);#endif	/* USE_IPV6 */		default:			return(FALSE);	}}u_charerrorspec_get_errcode(ERROR_SPEC *errorspec){	if (Obj_Class(errorspec) != class_ERROR_SPEC)		return(0);	switch(Obj_CType(errorspec)) {		case ctype_ERROR_SPEC_ipv4:			return(errorspec->errspec4_code);#ifdef	USE_IPV6		case ctype_ERROR_SPEC_ipv6:			return(errorspec->errspec6_code);#endif	/* USE_IPV6 */		default:			return(0);	}}interrorspec_set_errcode(ERROR_SPEC *errorspec,u_char code){	if (Obj_Class(errorspec) != class_ERROR_SPEC)		return(FALSE);	switch(Obj_CType(errorspec)) {		case ctype_ERROR_SPEC_ipv4:			errorspec->errspec4_code = code;			return(TRUE);#ifdef	USE_IPV6		case ctype_ERROR_SPEC_ipv6:			errorspec->errspec6_code = code;			return(TRUE);#endif	/* USE_IPV6 */		default:			return(FALSE);	}}u_charerrorspec_get_errflags(ERROR_SPEC *errorspec){	if (Obj_Class(errorspec) != class_ERROR_SPEC)		return(0);	switch(Obj_CType(errorspec)) {		case ctype_ERROR_SPEC_ipv4:			return(errorspec->errspec4_flags);#ifdef	USE_IPV6		case ctype_ERROR_SPEC_ipv6:			return(errorspec->errspec6_flags);#endif	/* USE_IPV6 */		default:			return(0);	}}interrorspec_set_errflags(ERROR_SPEC *errorspec,u_char flags){	if (Obj_Class(errorspec) != class_ERROR_SPEC)		return(FALSE);	switch(Obj_CType(errorspec)) {		case ctype_ERROR_SPEC_ipv4:			errorspec->errspec4_flags = flags;			return(TRUE);#ifdef	USE_IPV6		case ctype_ERROR_SPEC_ipv6:			errorspec->errspec6_flags = flags;			return(TRUE);#endif	/* USE_IPV6 */		default:			return(FALSE);	}}ERROR_SPEC *errorspec_create(net_if *inf,u_char code,u_int16_t value,u_char flags){	net_addr *addr;	static ERROR_SPEC es;	switch(NET_GET_TYPE(inf)) {		case NET_IF_PHY:			addr = &NET_GET_IF_PHY_ADDR(inf);			break;		case NET_IF_VIF:			addr = &NET_GET_IF_VIF_ADDR(inf);			break;		default:			return(FALSE);	}	switch(NET_GET_TYPE(addr)) {		case NET_ADDR_IPv4:			Init_Object(&es,ERROR_SPEC,ERROR_SPEC_ipv4);			es.errspec4_enode = NET_GET_ADDR_IPv4(addr);			es.errspec4_code = code;			es.errspec4_value = value;			es.errspec4_flags = flags;			return(&es);#ifdef	USE_IPV6		case NET_ADDR_IPv6:			Init_Object(&es,ERROR_SPEC,ERROR_SPEC_ipv6);			es.errspec6_enode = NET_GET_ADDR_IPv6(addr);			es.errspec6_code = code;			es.errspec6_value = value;			es.errspec6_flags = flags;			return(&es);#endif	/* USE_IPV6 */		default:			return(NULL);	}}intfilterspec_eq(FILTER_SPEC *filterspec1,FILTER_SPEC *filterspec2){	if ((Obj_Class(filterspec1) != class_FILTER_SPEC)			&& (Obj_Class(filterspec1) != class_SENDER_TEMPLATE))		return(FALSE);	if ((Obj_Class(filterspec2) != class_FILTER_SPEC)			&& (Obj_Class(filterspec2) != class_SENDER_TEMPLATE))		return(FALSE);	if (Obj_CType(filterspec1) != Obj_CType(filterspec2))		return(FALSE);	switch(Obj_CType(filterspec1)) {		case ctype_FILTER_SPEC_ipv4:			return(IN_ARE_ADDR_EQUAL(&filterspec1->filt4_srcaddr,					&filterspec2->filt4_srcaddr));		case ctype_FILTER_SPEC_ipv4GPI:			return(IN_ARE_ADDR_EQUAL(					&filterspec1->filtgpi4_srcaddr,					&filterspec2->filtgpi4_srcaddr));#ifdef	USE_IPV6		case ctype_FILTER_SPEC_ipv6:			return(IN6_ARE_ADDR_EQUAL(&filterspec1->filt6_srcaddr,					&filterspec2->filt6_srcaddr));		case ctype_FILTER_SPEC_ipv6GPI:			return(IN6_ARE_ADDR_EQUAL(					&filterspec1->filtgpi6_srcaddr,					&filterspec2->filtgpi6_srcaddr));#endif	/* USE_IPV6 */		default:			return(FALSE);	}}intfilterspec_lt(FILTER_SPEC *filterspec1,FILTER_SPEC *filterspec2){	if ((Obj_Class(filterspec1) != class_FILTER_SPEC)			&& (Obj_Class(filterspec1) != class_SENDER_TEMPLATE))		return(FALSE);	if ((Obj_Class(filterspec2) != class_FILTER_SPEC)			&& (Obj_Class(filterspec2) != class_SENDER_TEMPLATE))		return(FALSE);	if (Obj_CType(filterspec1) != Obj_CType(filterspec2))		return(FALSE);	switch(Obj_CType(filterspec1)) {		case ctype_FILTER_SPEC_ipv4:			return(memcmp((char *) &filterspec1->filt4_srcaddr,				(char *) &filterspec2->filt4_srcaddr,				sizeof(filterspec1->filt4_srcaddr)) < 0);		case ctype_FILTER_SPEC_ipv4GPI:			return(memcmp((char *) &filterspec1->filtgpi4_srcaddr,				(char *) &filterspec2->filtgpi4_srcaddr,				sizeof(filterspec1->filtgpi4_srcaddr)) < 0);#ifdef	USE_IPV6		case ctype_FILTER_SPEC_ipv6:			return(memcmp((char *) &filterspec1->filt6_srcaddr,				(char *) &filterspec2->filt6_srcaddr,				sizeof(filterspec1->filt6_srcaddr)) < 0);		case ctype_FILTER_SPEC_ipv6GPI:			return(memcmp((char *) &filterspec1->filtgpi6_srcaddr,				(char *) &filterspec2->filtgpi6_srcaddr,				sizeof(filterspec1->filtgpi6_srcaddr)) < 0);#endif	/* USE_IPV6 */		default:			return(FALSE);	}}intfilterspec_in_scope(FILTER_SPEC *filterspec,SCOPE *scope){	char *cp,*end,*addr;	int size;	if ((Obj_Class(filterspec) != class_FILTER_SPEC)			&& (Obj_Class(filterspec) != class_SENDER_TEMPLATE))		return(-1);	if (Obj_Class(scope) != class_SCOPE)		return(-1);	switch(Obj_CType(filterspec)) {		case ctype_FILTER_SPEC_ipv4:				if (Obj_CType(scope) != ctype_SCOPE_list_ipv4)					return(-1);				size = sizeof(SCOPE_list_ipv4);				addr = (char *) &filterspec->filt4_srcaddr;				break;		case ctype_FILTER_SPEC_ipv4GPI:				if (Obj_CType(scope) != ctype_SCOPE_list_ipv4)					return(-1);				size = sizeof(SCOPE_list_ipv4);				addr = (char *) &filterspec->filtgpi4_srcaddr;				break;#ifdef	USE_IPV6		case ctype_FILTER_SPEC_ipv6:				if (Obj_CType(scope) != ctype_SCOPE_list_ipv6)					return(-1);				size = sizeof(SCOPE_list_ipv6);				addr = (char *) &filterspec->filt6_srcaddr;				break;		case ctype_FILTER_SPEC_ipv6GPI:				if (Obj_CType(scope) != ctype_SCOPE_list_ipv6)					return(-1);				size = sizeof(SCOPE_list_ipv6);				addr = (char *) &filterspec->filtgpi6_srcaddr;				break;#endif	/* USE_IPV6 */		default:			return(-1);	}	end = (char *) Next_Object(scope);	for (cp = (char *) Obj_data(scope);cp < end; cp += size)		if (memcmp(cp,addr,size) == 0)			return((cp - (char *) Obj_data(scope)) / size);	return(-1);}net_addr *filterspec_addr(FILTER_SPEC *filterspec){	static net_addr addr;	if ((Obj_Class(filterspec) != class_FILTER_SPEC)			&& (Obj_Class(filterspec) != class_SENDER_TEMPLATE))		return(NULL);	switch(Obj_CType(filterspec)) {		case ctype_FILTER_SPEC_ipv4:			NET_SET_ADDR_IPv4(&addr,filterspec->filt4_srcaddr);			return(&addr);		case ctype_FILTER_SPEC_ipv4GPI:			NET_SET_ADDR_IPv4(&addr,filterspec->filtgpi4_srcaddr);			return(&addr);#ifdef	USE_IPV6		case ctype_FILTER_SPEC_ipv6:			NET_SET_ADDR_IPv6(&addr,filterspec->filt6_srcaddr);			return(&addr);		case ctype_FILTER_SPEC_ipv6GPI:			NET_SET_ADDR_IPv6(&addr,filterspec->filtgpi6_srcaddr);			return(&addr);#endif	/* USE_IPV6 */		default:			return(NULL);	}}u_int32_tfilterspec_port(FILTER_SPEC *filterspec){	if ((Obj_Class(filterspec) != class_FILTER_SPEC)			&& (Obj_Class(filterspec) != class_SENDER_TEMPLATE))		return(0);	switch(Obj_CType(filterspec)) {		case ctype_FILTER_SPEC_ipv4:			return(filterspec->filt4_srcport);		case ctype_FILTER_SPEC_ipv4GPI:			return(filterspec->filtgpi4_srcgpi);#ifdef	USE_IPV6		case ctype_FILTER_SPEC_ipv6:			return(filterspec->filt6_srcport);		case ctype_FILTER_SPEC_ipv6GPI:			return(filterspec->filtgpi6_srcgpi);#endif	/* USE_IPV6 */		default:			return(0);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -