int allow_address(sip_msg_t *_msg, int addr_group, str *ips, int port) { struct ip_addr *ipa; ipa=strtoipX(ips); if ( ipa ) { if (addr_hash_table && match_addr_hash_table(*addr_hash_table, addr_group, ipa, (unsigned int)port) == 1) { return 1; } else { if(subnet_table) { return match_subnet_table(*subnet_table, addr_group, ipa, (unsigned int)port); } } } else { if(domain_list_table) { return match_domain_name_table(*domain_list_table, addr_group, ips, (unsigned int)port); } } return -1; }
/* * Checks if an entry exists in cached address table that belongs to a * given address group and has given ip address and port. Port value * 0 in cached address table matches any port. */ int allow_address(struct sip_msg* _msg, char* _addr_group, char* _addr_sp, char* _port_sp) { unsigned int port; int addr_group; str ips; struct ip_addr *ipa; if(fixup_get_ivalue(_msg, (gparam_p)_addr_group, &addr_group) !=0 ) { LM_ERR("cannot get group value\n"); return -1; } if (_addr_sp==NULL || (fixup_get_svalue(_msg, (gparam_p)_addr_sp, &ips) < 0)) { LM_ERR("cannot get value of address pvar\n"); return -1; } ipa=strtoipX(&ips); if (_port_sp==NULL || (fixup_get_ivalue(_msg, (gparam_p)_port_sp, (int*)&port) < 0)) { LM_ERR("cannot get value of port pvar\n"); return -1; } if ( ipa ) { if (match_addr_hash_table(*addr_hash_table, addr_group, ipa, port) == 1) return 1; else return match_subnet_table(*subnet_table, addr_group, ipa, port); } else { return match_domain_name_table(*domain_list_table, addr_group, &ips, port); } }