]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/netinet/flow_divert_proto.h
xnu-7195.50.7.100.1.tar.gz
[apple/xnu.git] / bsd / netinet / flow_divert_proto.h
index 934746d01a249b11c59631171fb07f15c209b875..424a5bbde2981c4440a1c8cb87e37e7dfe0d9481 100644 (file)
@@ -1,8 +1,8 @@
 /*
- * Copyright (c) 2012-2015 Apple Inc. All rights reserved.
+ * Copyright (c) 2012-2017, 2020 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
- * 
+ *
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
  * unlawful or unlicensed copies of an Apple operating system, or to
  * circumvent, violate, or enable the circumvention or violation of, any
  * terms of an Apple operating system software license agreement.
- * 
+ *
  * Please obtain a copy of the License at
  * http://www.opensource.apple.com/apsl/ and read it before using this file.
- * 
+ *
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  * Please see the License for the specific language governing rights and
  * limitations under the License.
- * 
+ *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
  */
 
 #ifndef __FLOW_DIVERT_PROTO_H__
 #define __FLOW_DIVERT_PROTO_H__
 
-#define FLOW_DIVERT_CONTROL_NAME               "com.apple.flow-divert"
+#define FLOW_DIVERT_CONTROL_NAME                "com.apple.flow-divert"
 
-#define FLOW_DIVERT_TLV_LENGTH_UINT32  1
+#define FLOW_DIVERT_TLV_LENGTH_UINT32   1
 
-#define FLOW_DIVERT_PKT_CONNECT                        1
-#define FLOW_DIVERT_PKT_CONNECT_RESULT         2
-#define FLOW_DIVERT_PKT_DATA                   3
-#define FLOW_DIVERT_PKT_CLOSE                  4
-#define FLOW_DIVERT_PKT_READ_NOTIFY            5
-#define FLOW_DIVERT_PKT_GROUP_INIT             6
-#define FLOW_DIVERT_PKT_PROPERTIES_UPDATE      7
-#define FLOW_DIVERT_PKT_APP_MAP_CREATE         9
+#define FLOW_DIVERT_PKT_CONNECT                 1
+#define FLOW_DIVERT_PKT_CONNECT_RESULT          2
+#define FLOW_DIVERT_PKT_DATA                    3
+#define FLOW_DIVERT_PKT_CLOSE                   4
+#define FLOW_DIVERT_PKT_READ_NOTIFY             5
+#define FLOW_DIVERT_PKT_GROUP_INIT              6
+#define FLOW_DIVERT_PKT_PROPERTIES_UPDATE       7
+#define FLOW_DIVERT_PKT_APP_MAP_CREATE          9
 
-#define FLOW_DIVERT_TLV_NIL                    0
-#define FLOW_DIVERT_TLV_ERROR_CODE             5
-#define FLOW_DIVERT_TLV_HOW                    7
-#define FLOW_DIVERT_TLV_READ_COUNT             8
-#define FLOW_DIVERT_TLV_SPACE_AVAILABLE                9
-#define FLOW_DIVERT_TLV_CTL_UNIT               10
-#define FLOW_DIVERT_TLV_LOCAL_ADDR             11
-#define FLOW_DIVERT_TLV_REMOTE_ADDR            12
-#define FLOW_DIVERT_TLV_OUT_IF_INDEX           13
-#define FLOW_DIVERT_TLV_TRAFFIC_CLASS          14
-#define FLOW_DIVERT_TLV_NO_CELLULAR            15
-#define FLOW_DIVERT_TLV_FLOW_ID                        16
-#define FLOW_DIVERT_TLV_TOKEN_KEY              17
-#define FLOW_DIVERT_TLV_HMAC                   18
-#define FLOW_DIVERT_TLV_KEY_UNIT               19
-#define FLOW_DIVERT_TLV_LOG_LEVEL              20
-#define FLOW_DIVERT_TLV_TARGET_HOSTNAME                21
-#define FLOW_DIVERT_TLV_TARGET_ADDRESS         22
-#define FLOW_DIVERT_TLV_TARGET_PORT            23
-#define FLOW_DIVERT_TLV_CDHASH                 24
-#define FLOW_DIVERT_TLV_SIGNING_ID             25
-#define FLOW_DIVERT_TLV_PID                    26
-#define FLOW_DIVERT_TLV_UUID                   27
-#define FLOW_DIVERT_TLV_PREFIX_COUNT           28
-#define FLOW_DIVERT_TLV_FLAGS                  29
+#define FLOW_DIVERT_TLV_NIL                     0
+#define FLOW_DIVERT_TLV_ERROR_CODE              5
+#define FLOW_DIVERT_TLV_HOW                     7
+#define FLOW_DIVERT_TLV_READ_COUNT              8
+#define FLOW_DIVERT_TLV_SPACE_AVAILABLE         9
+#define FLOW_DIVERT_TLV_CTL_UNIT                10
+#define FLOW_DIVERT_TLV_LOCAL_ADDR              11
+#define FLOW_DIVERT_TLV_REMOTE_ADDR             12
+#define FLOW_DIVERT_TLV_OUT_IF_INDEX            13
+#define FLOW_DIVERT_TLV_TRAFFIC_CLASS           14
+#define FLOW_DIVERT_TLV_NO_CELLULAR             15
+#define FLOW_DIVERT_TLV_FLOW_ID                 16
+#define FLOW_DIVERT_TLV_TOKEN_KEY               17
+#define FLOW_DIVERT_TLV_HMAC                    18
+#define FLOW_DIVERT_TLV_KEY_UNIT                19
+#define FLOW_DIVERT_TLV_LOG_LEVEL               20
+#define FLOW_DIVERT_TLV_TARGET_HOSTNAME         21
+#define FLOW_DIVERT_TLV_TARGET_ADDRESS          22
+#define FLOW_DIVERT_TLV_TARGET_PORT             23
+#define FLOW_DIVERT_TLV_CDHASH                  24
+#define FLOW_DIVERT_TLV_SIGNING_ID              25
+#define FLOW_DIVERT_TLV_AGGREGATE_UNIT          26
+
+#define FLOW_DIVERT_TLV_PREFIX_COUNT            28
+#define FLOW_DIVERT_TLV_FLAGS                   29
 #define FLOW_DIVERT_TLV_FLOW_TYPE               30
-#define FLOW_DIVERT_TLV_APP_DATA               31
+#define FLOW_DIVERT_TLV_APP_DATA                31
+#define FLOW_DIVERT_TLV_APP_AUDIT_TOKEN         32
+#define FLOW_DIVERT_TLV_APP_REAL_SIGNING_ID     33
+#define FLOW_DIVERT_TLV_APP_REAL_CDHASH         34
+#define FLOW_DIVERT_TLV_APP_REAL_AUDIT_TOKEN    35
+#define FLOW_DIVERT_TLV_CFIL_ID                 36
 
 #define FLOW_DIVERT_FLOW_TYPE_TCP               1
 #define FLOW_DIVERT_FLOW_TYPE_UDP               3
 
-#define FLOW_DIVERT_CHUNK_SIZE                 4096
+#define FLOW_DIVERT_CHUNK_SIZE                  4096
+
+#define FLOW_DIVERT_TOKEN_GETOPT_MAX_SIZE       128
+
+#define FLOW_DIVERT_TOKEN_FLAG_VALIDATED        0x0000001
+#define FLOW_DIVERT_TOKEN_FLAG_TFO              0x0000002
+#define FLOW_DIVERT_TOKEN_FLAG_MPTCP            0x0000004
 
-#define FLOW_DIVERT_TOKEN_GETOPT_MAX_SIZE      128
+#define FLOW_DIVERT_GROUP_FLAG_NO_APP_MAP       0x0000001
 
-#define FLOW_DIVERT_TOKEN_FLAG_VALIDATED       0x0000001
-#define FLOW_DIVERT_TOKEN_FLAG_TFO                     0x0000002
-#define FLOW_DIVERT_TOKEN_FLAG_MPTCP           0x0000004
+#define FLOW_DIVERT_IS_TRANSPARENT              0x80000000
 
 struct flow_divert_packet_header {
-    uint8_t            packet_type;
-    uint32_t           conn_id;
+       uint8_t             packet_type;
+       uint32_t            conn_id;
 };
 
 #endif /* __FLOW_DIVERT_PROTO_H__ */