| 13810 | #endif |
| 13811 | |
| 13812 | int |
| 13813 | sctp_v4src_match_nexthop(struct sctp_ifa *sifa, sctp_route_t *ro) |
| 13814 | { |
| 13815 | #ifdef INET |
| 13816 | struct sockaddr_in *sin, *mask; |
| 13817 | struct ifaddr *ifa; |
| 13818 | struct in_addr srcnetaddr, gwnetaddr; |
| 13819 | |
| 13820 | if (ro == NULL || ro->ro_nh == NULL || |
| 13821 | sifa->address.sa.sa_family != AF_INET) { |
| 13822 | return (0); |
| 13823 | } |
| 13824 | ifa = (struct ifaddr *)sifa->ifa; |
| 13825 | mask = (struct sockaddr_in *)(ifa->ifa_netmask); |
| 13826 | sin = &sifa->address.sin; |
| 13827 | srcnetaddr.s_addr = (sin->sin_addr.s_addr & mask->sin_addr.s_addr); |
| 13828 | SCTPDBG(SCTP_DEBUG_OUTPUT1, "match_nexthop4: src address is "); |
| 13829 | SCTPDBG_ADDR(SCTP_DEBUG_OUTPUT2, &sifa->address.sa); |
| 13830 | SCTPDBG(SCTP_DEBUG_OUTPUT1, "network address is %x\n", srcnetaddr.s_addr); |
| 13831 | |
| 13832 | sin = &ro->ro_nh->gw4_sa; |
| 13833 | gwnetaddr.s_addr = (sin->sin_addr.s_addr & mask->sin_addr.s_addr); |
| 13834 | SCTPDBG(SCTP_DEBUG_OUTPUT1, "match_nexthop4: nexthop is "); |
| 13835 | SCTPDBG_ADDR(SCTP_DEBUG_OUTPUT2, &ro->ro_nh->gw_sa); |
| 13836 | SCTPDBG(SCTP_DEBUG_OUTPUT1, "network address is %x\n", gwnetaddr.s_addr); |
| 13837 | if (srcnetaddr.s_addr == gwnetaddr.s_addr) { |
| 13838 | return (1); |
| 13839 | } |
| 13840 | #endif |
| 13841 | return (0); |
| 13842 | } |
no outgoing calls
no test coverage detected