@@ -36,6 +36,7 @@ pub enum Af {
3636 Unspec = 0 ,
3737 Inet = 3 ,
3838 Inet6 = 1 ,
39+ Unix = 4 ,
3940 #[ cfg( feature = "vsock" ) ]
4041 Vsock = 2 ,
4142}
@@ -153,6 +154,7 @@ pub enum sockaddrBox {
153154 sockaddr( Box < sockaddr > ) ,
154155 sockaddr_in( Box < sockaddr_in > ) ,
155156 sockaddr_in6( Box < sockaddr_in6 > ) ,
157+ sockaddr_un( Box < sockaddr_un > ) ,
156158 #[ cfg( feature = "vsock" ) ]
157159 sockaddr_vm( Box < sockaddr_vm > ) ,
158160}
@@ -162,6 +164,7 @@ pub enum sockaddrRef<'a> {
162164 sockaddr( & ' a sockaddr ) ,
163165 sockaddr_in( & ' a sockaddr_in ) ,
164166 sockaddr_in6( & ' a sockaddr_in6 ) ,
167+ sockaddr_un( & ' a sockaddr_un ) ,
165168 #[ cfg( feature = "vsock" ) ]
166169 sockaddr_vm( & ' a sockaddr_vm ) ,
167170}
@@ -179,6 +182,7 @@ impl sockaddr {
179182 Af :: Unspec => sockaddrRef:: sockaddr ( unsafe { & * ptr } ) ,
180183 Af :: Inet => sockaddrRef:: sockaddr_in ( unsafe { & * ptr. cast ( ) } ) ,
181184 Af :: Inet6 => sockaddrRef:: sockaddr_in6 ( unsafe { & * ptr. cast ( ) } ) ,
185+ Af :: Unix => sockaddrRef:: sockaddr_un ( unsafe { & * ptr. cast ( ) } ) ,
182186 #[ cfg( feature = "vsock" ) ]
183187 Af :: Vsock => sockaddrRef:: sockaddr_vm ( unsafe { & * ptr. cast ( ) } ) ,
184188 } ;
@@ -191,6 +195,7 @@ impl sockaddr {
191195 Af :: Unspec => sockaddrBox:: sockaddr ( unsafe { Box :: from_raw ( ptr) } ) ,
192196 Af :: Inet => sockaddrBox:: sockaddr_in ( unsafe { Box :: from_raw ( ptr. cast ( ) ) } ) ,
193197 Af :: Inet6 => sockaddrBox:: sockaddr_in6 ( unsafe { Box :: from_raw ( ptr. cast ( ) ) } ) ,
198+ Af :: Unix => sockaddrBox:: sockaddr_un ( unsafe { Box :: from_raw ( ptr. cast ( ) ) } ) ,
194199 #[ cfg( feature = "vsock" ) ]
195200 Af :: Vsock => sockaddrBox:: sockaddr_vm ( unsafe { Box :: from_raw ( ptr. cast ( ) ) } ) ,
196201 } ;
@@ -204,6 +209,7 @@ impl sockaddrBox {
204209 sockaddrBox:: sockaddr( sockaddr) => Box :: into_raw ( sockaddr) ,
205210 sockaddrBox:: sockaddr_in( sockaddr_in) => Box :: into_raw ( sockaddr_in) . cast ( ) ,
206211 sockaddrBox:: sockaddr_in6( sockaddr_in6) => Box :: into_raw ( sockaddr_in6) . cast ( ) ,
212+ sockaddrBox:: sockaddr_un( sockaddr_un) => Box :: into_raw ( sockaddr_un) . cast ( ) ,
207213 #[ cfg( feature = "vsock" ) ]
208214 sockaddrBox:: sockaddr_vm( sockaddr_vm) => Box :: into_raw ( sockaddr_vm) . cast ( ) ,
209215 }
@@ -214,6 +220,7 @@ impl sockaddrBox {
214220 Self :: sockaddr( sockaddr) => sockaddrRef:: sockaddr ( sockaddr. as_ref ( ) ) ,
215221 Self :: sockaddr_in( sockaddr_in) => sockaddrRef:: sockaddr_in ( sockaddr_in. as_ref ( ) ) ,
216222 Self :: sockaddr_in6( sockaddr_in6) => sockaddrRef:: sockaddr_in6 ( sockaddr_in6. as_ref ( ) ) ,
223+ Self :: sockaddr_un( sockaddr_un) => sockaddrRef:: sockaddr_un ( sockaddr_un. as_ref ( ) ) ,
217224 #[ cfg( feature = "vsock" ) ]
218225 Self :: sockaddr_vm( sockaddr_vm) => sockaddrRef:: sockaddr_vm ( sockaddr_vm. as_ref ( ) ) ,
219226 }
@@ -235,6 +242,7 @@ impl sockaddrRef<'_> {
235242 sockaddrRef:: sockaddr( sockaddr) => sockaddr. sa_len ,
236243 sockaddrRef:: sockaddr_in( sockaddr_in) => sockaddr_in. sin_len ,
237244 sockaddrRef:: sockaddr_in6( sockaddr_in6) => sockaddr_in6. sin6_len ,
245+ sockaddrRef:: sockaddr_un( sockaddr_un) => sockaddr_un. sun_len ,
238246 #[ cfg( feature = "vsock" ) ]
239247 sockaddrRef:: sockaddr_vm( sockaddr_vm) => sockaddr_vm. svm_len ,
240248 }
@@ -448,6 +456,14 @@ impl From<SocketAddrV6> for sockaddr_in6 {
448456 }
449457}
450458
459+ #[ repr( C ) ]
460+ #[ derive( Debug , Copy , Clone ) ]
461+ pub struct sockaddr_un {
462+ pub sun_len : u8 ,
463+ pub sun_family : sa_family_t ,
464+ pub sun_path : [ c_char ; 104 ] ,
465+ }
466+
451467#[ repr( C ) ]
452468#[ derive( Debug , Copy , Clone ) ]
453469pub struct ip_mreq {
0 commit comments