Lines Matching +full:use +full:- +full:rtm

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
9 * This code is derived from software which forms part of the 4.4-Lite
13 * Redistribution and use in source and binary forms, with or without
31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
75 static int s = -1; /* routing socket */
120 struct rt_msghdr *rtm = &(m_rtmsg.m_rtm); in bsd_arp_set() local
128 sin->sin_addr = *ia; in bsd_arp_set()
144 sin = (struct sockaddr_in *)(rtm + 1); in bsd_arp_set()
145 sdl = (struct sockaddr_dl *)(sin->sin_len + (char *)sin); in bsd_arp_set()
146 if (sin->sin_addr.s_addr == sin_m.sin_addr.s_addr) { in bsd_arp_set()
147 if (sdl->sdl_family == AF_LINK && in bsd_arp_set()
148 !(rtm->rtm_flags & RTF_GATEWAY)) switch (sdl->sdl_type) { in bsd_arp_set()
156 inet_ntoa(sin->sin_addr)); in bsd_arp_set()
162 if (sdl->sdl_family != AF_LINK) { in bsd_arp_set()
165 inet_ntoa(sin->sin_addr)); in bsd_arp_set()
168 sdl_m.sdl_type = sdl->sdl_type; in bsd_arp_set()
169 sdl_m.sdl_index = sdl->sdl_index; in bsd_arp_set()
179 struct rt_msghdr *rtm = &m_rtmsg.m_rtm; in rtmsg() local
185 rtm->rtm_flags = flags; in rtmsg()
186 rtm->rtm_version = RTM_VERSION; in rtmsg()
190 report(LOG_ERR, "set_arp: internal wrong cmd - exiting"); in rtmsg()
194 rtm->rtm_addrs |= RTA_GATEWAY; in rtmsg()
195 rtm->rtm_rmx.rmx_expire = expire_time; in rtmsg()
196 rtm->rtm_inits = RTV_EXPIRE; in rtmsg()
197 rtm->rtm_flags |= (RTF_HOST | RTF_STATIC | RTF_LLDATA); in rtmsg()
199 rtm->rtm_addrs |= RTA_NETMASK; in rtmsg()
200 rtm->rtm_flags &= ~RTF_HOST; in rtmsg()
204 rtm->rtm_addrs |= RTA_DST; in rtmsg()
207 if (rtm->rtm_addrs & (w)) { \ in rtmsg()
214 rtm->rtm_msglen = cp - (char *)&m_rtmsg; in rtmsg()
216 l = rtm->rtm_msglen; in rtmsg()
217 rtm->rtm_seq = ++seq; in rtmsg()
218 rtm->rtm_type = cmd; in rtmsg()
223 return (-1); in rtmsg()
228 } while (l > 0 && (rtm->rtm_type != cmd || rtm->rtm_seq != seq || rtm->rtm_pid != getpid())); in rtmsg()