@@ -907,60 +907,39 @@ impl SockAddr {
907
907
/// with the size of the actual data type. sockaddr is commonly used as a proxy for
908
908
/// a superclass as C doesn't support inheritance, so many functions that take
909
909
/// a sockaddr * need to take the size of the underlying type as well and then internally cast it back.
910
- pub fn as_ffi_pair ( & self ) -> ( & libc:: sockaddr , libc:: socklen_t ) {
910
+ pub fn as_ffi_pair ( & self ) -> ( * const libc:: sockaddr , libc:: socklen_t ) {
911
911
match * self {
912
912
SockAddr :: Inet ( InetAddr :: V4 ( ref addr) ) => (
913
- // This cast is always allowed in C
914
- unsafe {
915
- & * ( addr as * const libc:: sockaddr_in as * const libc:: sockaddr )
916
- } ,
913
+ addr as * const libc:: sockaddr_in as * const libc:: sockaddr ,
917
914
mem:: size_of_val ( addr) as libc:: socklen_t
918
915
) ,
919
916
SockAddr :: Inet ( InetAddr :: V6 ( ref addr) ) => (
920
- // This cast is always allowed in C
921
- unsafe {
922
- & * ( addr as * const libc:: sockaddr_in6 as * const libc:: sockaddr )
923
- } ,
917
+ addr as * const libc:: sockaddr_in6 as * const libc:: sockaddr ,
924
918
mem:: size_of_val ( addr) as libc:: socklen_t
925
919
) ,
926
920
SockAddr :: Unix ( UnixAddr { ref sun, path_len } ) => (
927
- // This cast is always allowed in C
928
- unsafe {
929
- & * ( sun as * const libc:: sockaddr_un as * const libc:: sockaddr )
930
- } ,
921
+ sun as * const libc:: sockaddr_un as * const libc:: sockaddr ,
931
922
( path_len + offset_of ! ( libc:: sockaddr_un, sun_path) ) as libc:: socklen_t
932
923
) ,
933
924
#[ cfg( any( target_os = "android" , target_os = "linux" ) ) ]
934
925
SockAddr :: Netlink ( NetlinkAddr ( ref sa) ) => (
935
- // This cast is always allowed in C
936
- unsafe {
937
- & * ( sa as * const libc:: sockaddr_nl as * const libc:: sockaddr )
938
- } ,
926
+ sa as * const libc:: sockaddr_nl as * const libc:: sockaddr ,
939
927
mem:: size_of_val ( sa) as libc:: socklen_t
940
928
) ,
941
929
#[ cfg( any( target_os = "android" , target_os = "linux" ) ) ]
942
930
SockAddr :: Alg ( AlgAddr ( ref sa) ) => (
943
- // This cast is always allowed in C
944
- unsafe {
945
- & * ( sa as * const libc:: sockaddr_alg as * const libc:: sockaddr )
946
- } ,
931
+ sa as * const libc:: sockaddr_alg as * const libc:: sockaddr ,
947
932
mem:: size_of_val ( sa) as libc:: socklen_t
948
933
) ,
949
934
#[ cfg( any( target_os = "ios" , target_os = "macos" ) ) ]
950
935
SockAddr :: SysControl ( SysControlAddr ( ref sa) ) => (
951
- // This cast is always allowed in C
952
- unsafe {
953
- & * ( sa as * const libc:: sockaddr_ctl as * const libc:: sockaddr )
954
- } ,
936
+ sa as * const libc:: sockaddr_ctl as * const libc:: sockaddr ,
955
937
mem:: size_of_val ( sa) as libc:: socklen_t
956
938
957
939
) ,
958
940
#[ cfg( any( target_os = "android" , target_os = "linux" ) ) ]
959
941
SockAddr :: Link ( LinkAddr ( ref addr) ) => (
960
- // This cast is always allowed in C
961
- unsafe {
962
- & * ( addr as * const libc:: sockaddr_ll as * const libc:: sockaddr )
963
- } ,
942
+ addr as * const libc:: sockaddr_ll as * const libc:: sockaddr ,
964
943
mem:: size_of_val ( addr) as libc:: socklen_t
965
944
) ,
966
945
#[ cfg( any( target_os = "dragonfly" ,
@@ -971,18 +950,12 @@ impl SockAddr {
971
950
target_os = "netbsd" ,
972
951
target_os = "openbsd" ) ) ]
973
952
SockAddr :: Link ( LinkAddr ( ref addr) ) => (
974
- // This cast is always allowed in C
975
- unsafe {
976
- & * ( addr as * const libc:: sockaddr_dl as * const libc:: sockaddr )
977
- } ,
953
+ addr as * const libc:: sockaddr_dl as * const libc:: sockaddr ,
978
954
mem:: size_of_val ( addr) as libc:: socklen_t
979
955
) ,
980
956
#[ cfg( any( target_os = "android" , target_os = "linux" ) ) ]
981
957
SockAddr :: Vsock ( VsockAddr ( ref sa) ) => (
982
- // This cast is always allowed in C
983
- unsafe {
984
- & * ( sa as * const libc:: sockaddr_vm as * const libc:: sockaddr )
985
- } ,
958
+ sa as * const libc:: sockaddr_vm as * const libc:: sockaddr ,
986
959
mem:: size_of_val ( sa) as libc:: socklen_t
987
960
) ,
988
961
}
0 commit comments