 
 public extension CInterop {
     
+    /// `sockaddr_rc` RFCOMM socket address
+    struct RFCOMMSocketAddress: Equatable, Hashable {
+        
+        public let family: CInterop.SocketAddressFamily
+        public var address: BluetoothAddress
+        public var channel: UInt8
+        
+        public init(address: BluetoothAddress = .zero, channel: UInt8 = 0) {
+            self.family = .init(Self.family.rawValue)
+            self.address = address
+            self.channel = channel
+        }
+    }
+}
+
+extension CInterop.RFCOMMSocketAddress: CSocketAddress {
+    
+    @usableFromInline
+    static var family: SocketAddressFamily { .bluetooth }
+}
+
+public extension CInterop {
+    
+    /// `sockaddr_sco` SCO Socket Address
+    struct SCOSocketAddress: Equatable, Hashable {
+        public let family: CInterop.SocketAddressFamily
+        public var address: BluetoothAddress
+        public init(address: BluetoothAddress = .zero) {
+            self.family = .init(Self.family.rawValue)
+            self.address = address
+        }
+    }
+}
+
+extension CInterop.SCOSocketAddress: CSocketAddress {
+    
+    @usableFromInline
+    static var family: SocketAddressFamily { .bluetooth }
+}
+
+public extension CInterop {
+    
     /// `l2cap_conninfo` L2CAP Connection Information
     struct L2CAPConnectionInfo {
         public var handle: UInt16

    }
}

/* Ioctl requests structures */

public extension CInterop {
    


public extension CInterop {
    
    /// `sockaddr_hci`
    struct HCISocketAddress: Equatable, Hashable {
        
        public var family: CInterop.SocketAddressFamily //sa_family_t()
