| 456 | */ |
| 457 | |
| 458 | int |
| 459 | ProxyCheck(struct libalias *la, struct in_addr *proxy_server_addr, |
| 460 | u_short * proxy_server_port, struct in_addr src_addr, |
| 461 | struct in_addr dst_addr, u_short dst_port, u_char ip_p) |
| 462 | { |
| 463 | struct proxy_entry *ptr; |
| 464 | |
| 465 | LIBALIAS_LOCK_ASSERT(la); |
| 466 | |
| 467 | ptr = la->proxyList; |
| 468 | while (ptr != NULL) { |
| 469 | u_short proxy_port; |
| 470 | |
| 471 | proxy_port = ptr->proxy_port; |
| 472 | if ((dst_port == proxy_port || proxy_port == 0) |
| 473 | && ip_p == ptr->proto |
| 474 | && src_addr.s_addr != ptr->server_addr.s_addr) { |
| 475 | struct in_addr src_addr_masked; |
| 476 | struct in_addr dst_addr_masked; |
| 477 | |
| 478 | src_addr_masked.s_addr = src_addr.s_addr & ptr->src_mask.s_addr; |
| 479 | dst_addr_masked.s_addr = dst_addr.s_addr & ptr->dst_mask.s_addr; |
| 480 | |
| 481 | if ((src_addr_masked.s_addr == ptr->src_addr.s_addr) |
| 482 | && (dst_addr_masked.s_addr == ptr->dst_addr.s_addr)) { |
| 483 | if ((*proxy_server_port = ptr->server_port) == 0) |
| 484 | *proxy_server_port = dst_port; |
| 485 | *proxy_server_addr = ptr->server_addr; |
| 486 | return (ptr->proxy_type); |
| 487 | } |
| 488 | } |
| 489 | ptr = ptr->next; |
| 490 | } |
| 491 | |
| 492 | return (0); |
| 493 | } |
| 494 | |
| 495 | void |
| 496 | ProxyModify(struct libalias *la, struct alias_link *lnk, |
no outgoing calls
no test coverage detected