MCPcopy Create free account
hub / github.com/F-Stack/f-stack / sctp_v4src_match_nexthop

Function sctp_v4src_match_nexthop

freebsd/netinet/sctp_output.c:13812–13842  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13810#endif
13811
13812int
13813sctp_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}

Calls

no outgoing calls

Tested by

no test coverage detected