@@ -8,15 +8,142 @@ ios = "2.0"
88tvos = " 9.0"
99visionos = " 1.0"
1010
11+ # #
12+ # # Set pointer bounds information.
13+ # #
14+
15+ # TODO: Lifetime = static
16+ # fn.SCErrorString.return.bounds = "null-terminated"
17+
18+ fn.DHCPClientPreferencesSetApplicationOptions.arguments.1.bounds.counted-by = " count"
19+ fn.DHCPClientPreferencesCopyApplicationOptions.arguments.1.bounds = " single"
20+ fn.DHCPClientPreferencesCopyApplicationOptions.return.bounds.counted-by = " count"
21+
22+ fn.SCDynamicStoreCreate.arguments.3.written = false
23+ fn.SCDynamicStoreCreate.arguments.3.bounds = " single"
24+ fn.SCDynamicStoreCreateWithOptions.arguments.4.written = false
25+ fn.SCDynamicStoreCreateWithOptions.arguments.4.bounds = " single"
26+
27+ fn.SCDynamicStoreCopyComputerName.arguments.1.bounds = " single"
28+ fn.SCDynamicStoreCopyConsoleUser.arguments.1.bounds = " single"
29+ fn.SCDynamicStoreCopyConsoleUser.arguments.2.bounds = " single"
30+
31+ fn.SCNetworkCheckReachabilityByAddress.arguments.0.bounds = " unsafe" # sockaddr
32+ fn.SCNetworkCheckReachabilityByAddress.arguments.2.bounds = " single"
33+ fn.SCNetworkCheckReachabilityByName.arguments.0.bounds = " null-terminated"
34+ fn.SCNetworkCheckReachabilityByName.arguments.1.bounds = " single"
35+
36+ fn.SCNetworkInterfaceCopyMediaOptions.arguments.1.bounds = " single"
37+ fn.SCNetworkInterfaceCopyMediaOptions.arguments.2.bounds = " single"
38+ fn.SCNetworkInterfaceCopyMediaOptions.arguments.3.bounds = " single"
39+ fn.SCNetworkInterfaceCopyMTU.arguments.1.bounds = " single"
40+ fn.SCNetworkInterfaceCopyMTU.arguments.2.bounds = " single"
41+ fn.SCNetworkInterfaceCopyMTU.arguments.3.bounds = " single"
42+
43+ fn.SCNetworkConnectionCopyUserPreferences.arguments.1.bounds = " single"
44+ fn.SCNetworkConnectionCopyUserPreferences.arguments.2.bounds = " single"
45+ fn.SCNetworkConnectionCreateWithServiceID.arguments.3.written = false
46+ fn.SCNetworkConnectionCreateWithServiceID.arguments.3.bounds = " single"
47+
48+ fn.SCNetworkReachabilityCreateWithAddress.arguments.1.bounds = " unsafe" # sockaddr
49+ fn.SCNetworkReachabilityCreateWithAddressPair.arguments.1.bounds = " unsafe" # sockaddr
50+ fn.SCNetworkReachabilityCreateWithAddressPair.arguments.2.bounds = " unsafe" # sockaddr
51+ fn.SCNetworkReachabilityCreateWithName.arguments.1.bounds = " null-terminated"
52+ fn.SCNetworkReachabilityGetFlags.arguments.1.bounds = " single"
53+ fn.SCNetworkReachabilitySetCallback.arguments.2.written = false
54+ fn.SCNetworkReachabilitySetCallback.arguments.2.bounds = " single"
55+
56+ fn.SCPreferencesSetCallback.arguments.2.written = false
57+ fn.SCPreferencesSetCallback.arguments.2.bounds = " single"
58+
59+ # #
60+ # # Fix generics.
61+ # #
62+
63+ # TODO: Is CFPropertyList correct here?
64+
65+ fn.CNSetSupportedSSIDs.arguments.0.generics = [" CoreFoundation.CFString.CFString" ]
66+ fn.CNCopySupportedInterfaces.return.generics = [" CoreFoundation.CFString.CFString" ]
67+ fn.CNCopyCurrentNetworkInfo.return.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFPropertyList.CFPropertyList" ]
68+
69+ fn.SCDynamicStoreCreateWithOptions.arguments.2.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFPropertyList.CFPropertyList" ]
70+ fn.SCDynamicStoreCopyKeyList.return.generics = [" CoreFoundation.CFString.CFString" ]
71+ fn.SCDynamicStoreCopyMultiple.return.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFPropertyList.CFPropertyList" ]
72+ fn.SCDynamicStoreCopyMultiple.arguments.1.generics = [" CoreFoundation.CFString.CFString" ]
73+ fn.SCDynamicStoreCopyMultiple.arguments.2.generics = [" CoreFoundation.CFString.CFString" ]
74+ fn.SCDynamicStoreSetMultiple.arguments.1.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFPropertyList.CFPropertyList" ]
75+ fn.SCDynamicStoreSetMultiple.arguments.2.generics = [" CoreFoundation.CFString.CFString" ]
76+ fn.SCDynamicStoreSetMultiple.arguments.3.generics = [" CoreFoundation.CFString.CFString" ]
77+ fn.SCDynamicStoreSetNotificationKeys.arguments.1.generics = [" CoreFoundation.CFString.CFString" ]
78+ fn.SCDynamicStoreSetNotificationKeys.arguments.2.generics = [" CoreFoundation.CFString.CFString" ]
79+ fn.SCDynamicStoreCopyNotifiedKeys.return.generics = [" CoreFoundation.CFString.CFString" ]
80+ fn.SCDynamicStoreCopyProxies.return.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFType" ]
81+
82+ # These are tied together, it isn't documented what the keys/values of the dict is.
83+ fn.SCDynamicStoreCopyDHCPInfo.return.generics = []
84+ fn.DHCPInfoGetOptionData.arguments.0.generics = []
85+ fn.DHCPInfoGetLeaseStartTime.arguments.0.generics = []
86+ fn.DHCPInfoGetLeaseExpirationTime.arguments.0.generics = []
87+
88+ fn.SCNetworkInterfaceCopyAll.return.generics = [" SystemConfiguration.SCNetworkConfiguration.SCNetworkInterface" ]
89+ fn.SCBondInterfaceCopyAll.return.generics = [" SystemConfiguration.SCNetworkConfiguration.SCBondInterface" ]
90+ fn.SCBondInterfaceCopyAvailableMemberInterfaces.return.generics = [" SystemConfiguration.SCNetworkConfiguration.SCBondInterface" ]
91+ fn.SCBondInterfaceGetMemberInterfaces.return.generics = [" SystemConfiguration.SCNetworkConfiguration.SCBondInterface" ]
92+ fn.SCBondInterfaceSetMemberInterfaces.arguments.1.generics = [" SystemConfiguration.SCNetworkConfiguration.SCBondInterface" ]
93+ fn.SCVLANInterfaceCopyAll.return.generics = [" SystemConfiguration.SCNetworkConfiguration.SCVLANInterface" ]
94+ fn.SCVLANInterfaceCopyAvailablePhysicalInterfaces.return.generics = [" SystemConfiguration.SCNetworkConfiguration.SCVLANInterface" ]
95+ fn.SCBondStatusGetMemberInterfaces.return.generics = [" SystemConfiguration.SCNetworkConfiguration.SCBondInterface" ]
96+ fn.SCBondStatusGetInterfaceStatus.return.generics = [] # TODO: Unsure?
97+ fn.SCNetworkServiceCopyAll.return.generics = [" SystemConfiguration.SCNetworkConfiguration.SCNetworkService" ]
98+ fn.SCNetworkServiceCopyProtocols.return.generics = [" SystemConfiguration.SCNetworkConfiguration.SCNetworkProtocol" ]
99+ fn.SCNetworkSetCopyAll.return.generics = [" SystemConfiguration.SCNetworkConfiguration.SCNetworkSet" ]
100+ fn.SCNetworkSetCopyServices.return.generics = [" SystemConfiguration.SCNetworkConfiguration.SCNetworkService" ]
101+ fn.SCNetworkSetGetServiceOrder.return.generics = [" CoreFoundation.CFString.CFString" ] # Service identifiers
102+ fn.SCNetworkSetSetServiceOrder.arguments.1.generics = [" CoreFoundation.CFString.CFString" ] # Service identifiers
103+
104+ # (subtype, options), maybe options is CFString?
105+ fn.SCNetworkInterfaceGetSupportedInterfaceTypes.return.generics = [" CoreFoundation.CFString.CFString" ]
106+ fn.SCNetworkInterfaceGetSupportedProtocolTypes.return.generics = [" CoreFoundation.CFString.CFString" ]
107+ fn.SCNetworkInterfaceCopyMediaOptions.arguments.1.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFType" ]
108+ fn.SCNetworkInterfaceCopyMediaOptions.arguments.2.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFType" ]
109+ fn.SCNetworkInterfaceCopyMediaOptions.arguments.3.generics = [" CoreFoundation.CFString.CFString" ]
110+ fn.SCNetworkInterfaceCopyMediaSubTypes.return.generics = [" CoreFoundation.CFString.CFString" ]
111+ fn.SCNetworkInterfaceCopyMediaSubTypes.arguments.0.generics = [" CoreFoundation.CFString.CFString" ]
112+ fn.SCNetworkInterfaceCopyMediaSubTypeOptions.return.generics = [" CoreFoundation.CFString.CFString" ]
113+ fn.SCNetworkInterfaceCopyMediaSubTypeOptions.arguments.0.generics = [" CoreFoundation.CFString.CFString" ]
114+ fn.SCNetworkInterfaceSetMediaOptions.arguments.2.generics = [" CoreFoundation.CFString.CFString" ]
115+ fn.SCBondInterfaceGetOptions.return.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFType" ]
116+ fn.SCBondInterfaceSetOptions.arguments.1.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFType" ]
117+ fn.SCVLANInterfaceGetOptions.return.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFType" ]
118+ fn.SCVLANInterfaceSetOptions.arguments.1.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFType" ]
119+
120+ # Undocumented what these are
121+ fn.SCNetworkInterfaceGetConfiguration.return.generics = []
122+ fn.SCNetworkInterfaceSetConfiguration.arguments.1.generics = []
123+ fn.SCNetworkInterfaceGetExtendedConfiguration.return.generics = []
124+ fn.SCNetworkInterfaceSetExtendedConfiguration.arguments.2.generics = []
125+ fn.SCNetworkProtocolGetConfiguration.return.generics = []
126+ fn.SCNetworkProtocolSetConfiguration.arguments.1.generics = []
127+
128+ fn.SCNetworkConnectionCopyUserPreferences.arguments.0.generics = [] # Unused pass NULL
129+ fn.SCNetworkConnectionCopyUserPreferences.arguments.2.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFType" ] # Unsure?
130+ fn.SCNetworkConnectionCopyExtendedStatus.return.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFType" ] # Maybe property list?
131+ fn.SCNetworkConnectionCopyStatistics.return.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFType" ] # Unsure?
132+ fn.SCNetworkConnectionStart.arguments.1.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFType" ] # Unsure?
133+ fn.SCNetworkConnectionCopyUserOptions.return.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFType" ] # Set above.
134+
135+ fn.SCPreferencesCopyKeyList.return.generics = [" CoreFoundation.CFString.CFString" ]
136+ fn.SCPreferencesPathGetValue.return.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFPropertyList.CFPropertyList" ]
137+ fn.SCPreferencesPathSetValue.arguments.2.generics = [" CoreFoundation.CFString.CFString" , " CoreFoundation.CFPropertyList.CFPropertyList" ]
138+
139+ # #
140+ # # Safety.
141+ # #
142+
11143# SAFETY: SystemConfiguration has no memory-safety violating
12144# functions (apart from those that take pointers).
13145unsafe-default-safety.documentation-is-reviewed = true
14146
15- # TODO(breaking): Make these unsafe, or fix the type.
16- fn.SCNetworkInterfaceCopyMediaSubTypes.unsafe = false
17- fn.SCNetworkInterfaceCopyMediaSubTypeOptions.unsafe = false
18- fn.SCNetworkInterfaceSetMediaOptions.unsafe = false
19-
20147# TODO(breaking): Maybe make these unsafe?
21148fn.SCNetworkConnectionScheduleWithRunLoop.unsafe = false
22149fn.SCNetworkConnectionUnscheduleFromRunLoop.unsafe = false
0 commit comments