4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan/*
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * CDDL HEADER START
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan *
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * The contents of this file are subject to the terms of the
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * Common Development and Distribution License (the "License").
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * You may not use this file except in compliance with the License.
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan *
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * or http://www.opensolaris.org/os/licensing.
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * See the License for the specific language governing permissions
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * and limitations under the License.
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan *
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * When distributing Covered Code, include this CDDL HEADER in each
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * If applicable, add the following below this CDDL HEADER, with the
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * fields enclosed by brackets "[]" replaced with your own identifying
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * information: Portions Copyright [yyyy] [name of copyright owner]
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan *
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * CDDL HEADER END
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan */
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan/*
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * Use is subject to license terms.
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan */
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#ifndef _IP2MAC_H
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#define _IP2MAC_H
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#ifdef __cplusplus
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhanextern "C" {
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#endif
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#include <sys/types.h>
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#include <sys/socket_impl.h>
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#include <net/if_dl.h>
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#ifdef _KERNEL
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan/*
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan * IP address -> link layer address conversion routines and structures.
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan */
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhantypedef struct ip2mac {
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan struct sockaddr_storage ip2mac_pa;
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan struct sockaddr_dl ip2mac_ha;
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan uint_t ip2mac_err;
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan uint_t ip2mac_ifindex;
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan} ip2mac_t;
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#define IP2MAC_RESOLVE 0x01 /* Asynchronously resolve, if needed */
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#define IP2MAC_LOOKUP 0x02 /* Lookup only */
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhantypedef void *ip2mac_id_t;
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhantypedef void (ip2mac_callback_t)(ip2mac_t *, void *);
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhanextern ip2mac_id_t ip2mac(uint_t, ip2mac_t *, ip2mac_callback_t *,
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan void *, zoneid_t);
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhanextern int ip2mac_cancel(ip2mac_id_t, zoneid_t);
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#endif /* _KERNEL */
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#ifdef __cplusplus
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan}
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#endif
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan
4b7cbb468ccaa93f260f3964b823da34e5b0e1e5Sowmini Varadhan#endif /* _IP2MAC_H */