X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/b0d623f7f2ae71ed96e60569f61f9a9a27016e80..3e170ce000f1506b7b5d2c5c7faec85ceabb573d:/bsd/net/if_utun.h?ds=sidebyside diff --git a/bsd/net/if_utun.h b/bsd/net/if_utun.h index a5dc22cfe..2ffd72ee1 100644 --- a/bsd/net/if_utun.h +++ b/bsd/net/if_utun.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008 Apple Inc. All rights reserved. + * Copyright (c) 2008-2013 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -30,22 +30,79 @@ #ifndef _NET_IF_UTUN_H_ #define _NET_IF_UTUN_H_ +#ifdef PRIVATE +#include +#endif /* PRIVATE */ + #ifdef KERNEL_PRIVATE +#include + +/* Control block allocated for each kernel control connection */ +struct utun_pcb { + kern_ctl_ref utun_ctlref; + ifnet_t utun_ifp; + u_int32_t utun_unit; + u_int32_t utun_flags; + int utun_ext_ifdata_stats; + u_int32_t utun_max_pending_packets; + utun_crypto_ctx_t utun_crypto_ctx[UTUN_CRYPTO_CTX_NUM_DIRS]; +}; + +void* utun_alloc(size_t size); +void utun_free(void *ptr); errno_t utun_register_control(void); #endif +/* + * Name registered by the utun kernel control + */ +#define UTUN_CONTROL_NAME "com.apple.net.utun_control" + +/* + * Socket option names to manage utun + */ +#define UTUN_OPT_FLAGS 1 +#define UTUN_OPT_IFNAME 2 +#define UTUN_OPT_EXT_IFDATA_STATS 3 /* get|set (type int) */ +#define UTUN_OPT_INC_IFDATA_STATS_IN 4 /* set to increment stat counters (type struct utun_stats_param) */ +#define UTUN_OPT_INC_IFDATA_STATS_OUT 5 /* set to increment stat counters (type struct utun_stats_param) */ + #ifdef PRIVATE +#define UTUN_OPT_ENABLE_CRYPTO 6 +#define UTUN_OPT_CONFIG_CRYPTO_KEYS 7 +#define UTUN_OPT_UNCONFIG_CRYPTO_KEYS 8 +#define UTUN_OPT_GENERATE_CRYPTO_KEYS_IDX 9 +#define UTUN_OPT_DISABLE_CRYPTO 10 +#define UTUN_OPT_STOP_CRYPTO_DATA_TRAFFIC 11 +#define UTUN_OPT_START_CRYPTO_DATA_TRAFFIC 12 +#define UTUN_OPT_CONFIG_CRYPTO_FRAMER 13 +#define UTUN_OPT_UNCONFIG_CRYPTO_FRAMER 14 +#endif /* PRIVATE */ -#define UTUN_CONTROL_NAME "com.apple.net.utun_control" -#define UTUN_OPT_FLAGS 1 -#define UTUN_OPT_IFNAME 2 +#define UTUN_OPT_SET_DELEGATE_INTERFACE 15 /* set the delegate interface (char[]) */ +#define UTUN_OPT_MAX_PENDING_PACKETS 16 /* the number of packets that can be waiting to be read + from the control socket at a time */ + +/* + * Flags for by UTUN_OPT_FLAGS + */ +#define UTUN_FLAGS_NO_OUTPUT 0x0001 +#define UTUN_FLAGS_NO_INPUT 0x0002 -enum { - UTUN_FLAGS_NO_OUTPUT = 0x1, - UTUN_FLAGS_NO_INPUT = 0x2, +#ifdef PRIVATE +#define UTUN_FLAGS_CRYPTO 0x0004 +#define UTUN_FLAGS_CRYPTO_STOP_DATA_TRAFFIC 0x0008 +#endif /* PRIVATE */ + +/* + * utun stats parameter structure + */ +struct utun_stats_param { + u_int64_t utsp_packets; + u_int64_t utsp_bytes; + u_int64_t utsp_errors; }; #endif -#endif