📄 rsvp_objs.c
字号:
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 + -