if_ether.h revision 199767f8919635c4928607450d9e0abb932109ce
199767f8919635c4928607450d9e0abb932109ceToomas Soome * Copyright (c) 1982, 1986, 1993
199767f8919635c4928607450d9e0abb932109ceToomas Soome * The Regents of the University of California. All rights reserved.
199767f8919635c4928607450d9e0abb932109ceToomas Soome * Redistribution and use in source and binary forms, with or without
199767f8919635c4928607450d9e0abb932109ceToomas Soome * modification, are permitted provided that the following conditions
199767f8919635c4928607450d9e0abb932109ceToomas Soome * 1. Redistributions of source code must retain the above copyright
199767f8919635c4928607450d9e0abb932109ceToomas Soome * notice, this list of conditions and the following disclaimer.
199767f8919635c4928607450d9e0abb932109ceToomas Soome * 2. Redistributions in binary form must reproduce the above copyright
199767f8919635c4928607450d9e0abb932109ceToomas Soome * notice, this list of conditions and the following disclaimer in the
199767f8919635c4928607450d9e0abb932109ceToomas Soome * documentation and/or other materials provided with the distribution.
199767f8919635c4928607450d9e0abb932109ceToomas Soome * 4. Neither the name of the University nor the names of its contributors
199767f8919635c4928607450d9e0abb932109ceToomas Soome * may be used to endorse or promote products derived from this software
199767f8919635c4928607450d9e0abb932109ceToomas Soome * without specific prior written permission.
199767f8919635c4928607450d9e0abb932109ceToomas Soome * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
199767f8919635c4928607450d9e0abb932109ceToomas Soome * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
199767f8919635c4928607450d9e0abb932109ceToomas Soome * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
199767f8919635c4928607450d9e0abb932109ceToomas Soome * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
199767f8919635c4928607450d9e0abb932109ceToomas Soome * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
199767f8919635c4928607450d9e0abb932109ceToomas Soome * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
199767f8919635c4928607450d9e0abb932109ceToomas Soome * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
199767f8919635c4928607450d9e0abb932109ceToomas Soome * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
199767f8919635c4928607450d9e0abb932109ceToomas Soome * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
199767f8919635c4928607450d9e0abb932109ceToomas Soome * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
199767f8919635c4928607450d9e0abb932109ceToomas Soome * SUCH DAMAGE.
199767f8919635c4928607450d9e0abb932109ceToomas Soome * @(#)if_ether.h 8.3 (Berkeley) 5/2/95
199767f8919635c4928607450d9e0abb932109ceToomas Soome * Macro to map an IP multicast address to an Ethernet multicast address.
199767f8919635c4928607450d9e0abb932109ceToomas Soome * The high-order 25 bits of the Ethernet address are statically assigned,
199767f8919635c4928607450d9e0abb932109ceToomas Soome * and the low-order 23 bits are taken from the low end of the IP address.
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr) \
199767f8919635c4928607450d9e0abb932109ceToomas Soome /* struct in_addr *ipaddr; */ \
199767f8919635c4928607450d9e0abb932109ceToomas Soome /* u_char enaddr[ETHER_ADDR_LEN]; */ \
199767f8919635c4928607450d9e0abb932109ceToomas Soome (enaddr)[3] = ((const u_char *)ipaddr)[1] & 0x7f; \
199767f8919635c4928607450d9e0abb932109ceToomas Soome * Macro to map an IP6 multicast address to an Ethernet multicast address.
199767f8919635c4928607450d9e0abb932109ceToomas Soome * The high-order 16 bits of the Ethernet address are statically assigned,
199767f8919635c4928607450d9e0abb932109ceToomas Soome * and the low-order 32 bits are taken from the low end of the IP6 address.
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define ETHER_MAP_IPV6_MULTICAST(ip6addr, enaddr) \
199767f8919635c4928607450d9e0abb932109ceToomas Soome/* struct in6_addr *ip6addr; */ \
199767f8919635c4928607450d9e0abb932109ceToomas Soome/* u_char enaddr[ETHER_ADDR_LEN]; */ \
199767f8919635c4928607450d9e0abb932109ceToomas Soome * Ethernet Address Resolution Protocol.
199767f8919635c4928607450d9e0abb932109ceToomas Soome * See RFC 826 for protocol description. Structure below is adapted
199767f8919635c4928607450d9e0abb932109ceToomas Soome * to resolving internet addresses. Field names used correspond to
199767f8919635c4928607450d9e0abb932109ceToomas Soome u_char arp_sha[ETHER_ADDR_LEN]; /* sender hardware address */
199767f8919635c4928607450d9e0abb932109ceToomas Soome u_char arp_spa[4]; /* sender protocol address */
199767f8919635c4928607450d9e0abb932109ceToomas Soome u_char arp_tha[ETHER_ADDR_LEN]; /* target hardware address */
199767f8919635c4928607450d9e0abb932109ceToomas Soome u_char arp_tpa[4]; /* target protocol address */
199767f8919635c4928607450d9e0abb932109ceToomas Soome#ifndef BURN_BRIDGES /* Can be used by third party software. */
199767f8919635c4928607450d9e0abb932109ceToomas Soome#endif /* !BURN_BRIDGES */
199767f8919635c4928607450d9e0abb932109ceToomas Soome * IP and ethernet specific routing flags
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define RTF_USETRAILERS RTF_PROTO1 /* use trailers */
199767f8919635c4928607450d9e0abb932109ceToomas Soome#define RTF_ANNOUNCE RTF_PROTO2 /* announce new arp entry */
199767f8919635c4928607450d9e0abb932109ceToomas Soomeextern u_char ether_ipmulticast_min[ETHER_ADDR_LEN];
199767f8919635c4928607450d9e0abb932109ceToomas Soomeextern u_char ether_ipmulticast_max[ETHER_ADDR_LEN];
199767f8919635c4928607450d9e0abb932109ceToomas Soomeint arpresolve(struct ifnet *ifp, int is_gw, struct mbuf *m,
199767f8919635c4928607450d9e0abb932109ceToomas Soome const struct sockaddr *dst, u_char *desten, uint32_t *pflags);
199767f8919635c4928607450d9e0abb932109ceToomas Soomevoid arprequest(struct ifnet *, const struct in_addr *,
199767f8919635c4928607450d9e0abb932109ceToomas Soomevoid arp_ifinit(struct ifnet *, struct ifaddr *);
199767f8919635c4928607450d9e0abb932109ceToomas Soomevoid arp_ifinit2(struct ifnet *, struct ifaddr *, u_char *);