packet.h revision 336069c20319c172c4ff9d87d67e8f6301c98a5d
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2015 Joyent, Inc. All rights reserved.
*/
#ifndef _PACKET_H
#define _PACKET_H
#include <sys/socket_impl.h>
/*
* With which we do the reverse of what it libpcap does....
*/
#define PACKET_OUTGOING LINUX_SLL_OUTGOING
#define PACKET_HOST LINUX_SLL_HOST
#define PACKET_BROADCAST LINUX_SLL_BROADCAST
#define PACKET_MULTICAST LINUX_SLL_MULTICAST
#define PACKET_OTHERHOST LINUX_SLL_OTHERHOST
#define PACKET_STATISTICS_SHORT 1
#define PACKET_ADD_MEMBERSHIP 2
#define PACKET_DROP_MEMBERSHIP 3
#define PACKET_AUXDATA 4
#define PACKET_STATISTICS 5
struct packet_mreq {
};
#define PACKET_MR_MULTICAST 1
#define PACKET_MR_PROMISC 2
#define PACKET_MR_ALLMULTI 3
typedef enum tpkt_status_e {
struct tpacket_auxdata { /* tp_macoff/tp_netoff ?? */
};
struct tpacket_hdr { /* tp_macoff/tp_netoff ?? */
};
struct tpacket2_hdr { /* tp_macoff/tp_netoff ?? */
};
struct tpacket_stats {
};
struct tpacket_stats_short {
};
struct sock_filter { /* Fields named from bpf_insn */
uint32_t k;
};
struct sock_fprog {
struct sock_filter *filter;
};
/*
* Linux ARPHRD_ symbols needed...
*
* The numbers above 50000 are because their real value is unknown from
* libpcap's source, so a number has been chosen that is unlikely to be
* confused with the real one on Linux. Those that are already found in
* in Linux but it should be used instead as the Solaris value originates
* from the IANA whereas the Linux values seem to ignore it.
*/
#define ARPHRD_CSLIP 50005
#define ARPHRD_CSLIP6 50006
#define ARPHRD_DLCI 15
#define ARPHRD_FCAL 785
#define ARPHRD_FCFABRIC 787
#define ARPHRD_FCPL 786
#define ARPHRD_FCPP 784
#define ARPHRD_FRAD 770
#define ARPHRD_FDDI 774
#define ARPHRD_IEEE802_TR 800
#define ARPHRD_IEEE80211 801
#define ARPHRD_IEEE80211_PRISM 802
#define ARPHRD_IEEE80211_RADIOTAP 803
#define ARPHRD_IRDA 783
#define ARPHRD_LAPD 8445
#define ARPHRD_LOCALTLK 50010
#define ARPHRD_LOOPBACK 50011
#define ARPHRD_PRONET 50013
#define ARPHRD_PPP 50014
#define ARPHRD_RAWHDLC 518
#define ARPHRD_SIT 776
#define ARPHRD_SLIP6 50015
#define ARPHRD_SLIP 50016
#define ETH_P_ALL 0
#define ETH_P_803_3 0
#define ETH_P_IP 0x800
#define ETH_P_ARP 0x806
#define ETH_P_IPV6 0x86dd
#ifdef _KERNEL
/*
* PFP socket structure.
*/
typedef struct pfpsock {
struct bpf_program ps_bpf;
int ps_type;
int ps_proto;
struct tpacket_stats ps_stats;
} pfpsock_t;
typedef struct pfp_kstats_s {
} pfp_kstats_t;
#endif /* _KERNEL */
#endif /* _PACKET_H */