Skip to content

Commit e8c0ad3

Browse files
committed
Fix signatures in SystemConfiguration
1 parent 8366c7a commit e8c0ad3

File tree

4 files changed

+147
-7
lines changed

4 files changed

+147
-7
lines changed

framework-crates/objc2-system-configuration/Cargo.toml

Lines changed: 12 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

framework-crates/objc2-system-configuration/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ extern crate alloc;
1616
#[cfg(feature = "std")]
1717
extern crate std;
1818

19+
// TODO(breaking): Figure out `SCNetworkInterfaceRefreshConfiguration`'s ABI
20+
#[allow(improper_ctypes_definitions)]
1921
mod generated;
2022
#[allow(unused_imports, unreachable_pub)]
2123
pub use self::generated::*;

framework-crates/objc2-system-configuration/translation-config.toml

Lines changed: 132 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,142 @@ ios = "2.0"
88
tvos = "9.0"
99
visionos = "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).
13145
unsafe-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?
21148
fn.SCNetworkConnectionScheduleWithRunLoop.unsafe = false
22149
fn.SCNetworkConnectionUnscheduleFromRunLoop.unsafe = false

0 commit comments

Comments
 (0)