@@ -46,6 +46,8 @@ pub type au_asid_t = ::pid_t;
46
46
47
47
pub type cpusetid_t = :: c_int ;
48
48
49
+ pub type sctp_assoc_t = u32 ;
50
+
49
51
#[ cfg_attr( feature = "extra_traits" , derive( Debug , Hash , PartialEq , Eq ) ) ]
50
52
#[ repr( u32 ) ]
51
53
pub enum devstat_support_flags {
@@ -1019,6 +1021,110 @@ s! {
1019
1021
__priva: [ [ :: uintptr_t; 32 ] ; 8 ] ,
1020
1022
__privb: [ :: uintptr_t; 2 ] ,
1021
1023
}
1024
+
1025
+ pub struct sctp_event {
1026
+ pub se_assoc_id: :: sctp_assoc_t,
1027
+ pub se_type: u16 ,
1028
+ pub se_on: u8 ,
1029
+ }
1030
+
1031
+ pub struct sctp_event_subscribe {
1032
+ pub sctp_data_io_event: u8 ,
1033
+ pub sctp_association_event: u8 ,
1034
+ pub sctp_address_event: u8 ,
1035
+ pub sctp_send_failure_event: u8 ,
1036
+ pub sctp_peer_error_event: u8 ,
1037
+ pub sctp_shutdown_event: u8 ,
1038
+ pub sctp_partial_delivery_event: u8 ,
1039
+ pub sctp_adaptation_layer_event: u8 ,
1040
+ pub sctp_authentication_event: u8 ,
1041
+ pub sctp_sender_dry_event: u8 ,
1042
+ pub sctp_stream_reset_event: u8 ,
1043
+ }
1044
+
1045
+ pub struct sctp_initmsg {
1046
+ pub sinit_num_ostreams: u16 ,
1047
+ pub sinit_max_instreams: u16 ,
1048
+ pub sinit_max_attempts: u16 ,
1049
+ pub sinit_max_init_timeo: u16 ,
1050
+ }
1051
+
1052
+ pub struct sctp_sndrcvinfo {
1053
+ pub sinfo_stream: u16 ,
1054
+ pub sinfo_ssn: u16 ,
1055
+ pub sinfo_flags: u16 ,
1056
+ pub sinfo_ppid: u32 ,
1057
+ pub sinfo_context: u32 ,
1058
+ pub sinfo_timetolive: u32 ,
1059
+ pub sinfo_tsn: u32 ,
1060
+ pub sinfo_cumtsn: u32 ,
1061
+ pub sinfo_assoc_id: :: sctp_assoc_t,
1062
+ pub sinfo_keynumber: u16 ,
1063
+ pub sinfo_keynumber_valid: u16 ,
1064
+ pub __reserve_pad: [ [ u8 ; 23 ] ; 4 ] ,
1065
+ }
1066
+
1067
+ pub struct sctp_extrcvinfo {
1068
+ pub sinfo_stream: u16 ,
1069
+ pub sinfo_ssn: u16 ,
1070
+ pub sinfo_flags: u16 ,
1071
+ pub sinfo_ppid: u32 ,
1072
+ pub sinfo_context: u32 ,
1073
+ pub sinfo_timetolive: u32 ,
1074
+ pub sinfo_tsn: u32 ,
1075
+ pub sinfo_cumtsn: u32 ,
1076
+ pub sinfo_assoc_id: :: sctp_assoc_t,
1077
+ pub serinfo_next_flags: u16 ,
1078
+ pub serinfo_next_stream: u16 ,
1079
+ pub serinfo_next_aid: u32 ,
1080
+ pub serinfo_next_length: u32 ,
1081
+ pub serinfo_next_ppid: u32 ,
1082
+ pub sinfo_keynumber: u16 ,
1083
+ pub sinfo_keynumber_valid: u16 ,
1084
+ pub __reserve_pad: [ [ u8 ; 19 ] ; 4 ] ,
1085
+ }
1086
+
1087
+ pub struct sctp_sndinfo {
1088
+ pub snd_sid: u16 ,
1089
+ pub snd_flags: u16 ,
1090
+ pub snd_ppid: u32 ,
1091
+ pub snd_context: u32 ,
1092
+ pub snd_assoc_id: :: sctp_assoc_t,
1093
+ }
1094
+
1095
+ pub struct sctp_prinfo {
1096
+ pub pr_policy: u16 ,
1097
+ pub pr_value: u32 ,
1098
+ }
1099
+
1100
+ pub struct sctp_default_prinfo {
1101
+ pub pr_policy: u16 ,
1102
+ pub pr_value: u32 ,
1103
+ pub pr_assoc_id: :: sctp_assoc_t,
1104
+ }
1105
+
1106
+ pub struct sctp_authinfo {
1107
+ pub auth_keynumber: u16 ,
1108
+ }
1109
+
1110
+ pub struct sctp_rcvinfo {
1111
+ pub rcv_sid: u16 ,
1112
+ pub rcv_ssn: u16 ,
1113
+ pub rcv_flags: u16 ,
1114
+ pub rcv_ppid: u32 ,
1115
+ pub rcv_tsn: u32 ,
1116
+ pub rcv_cumtsn: u32 ,
1117
+ pub rcv_context: u32 ,
1118
+ pub rcv_assoc_id: :: sctp_assoc_t,
1119
+ }
1120
+
1121
+ pub struct sctp_nxtinfo {
1122
+ pub nxt_sid: u16 ,
1123
+ pub nxt_flags: u16 ,
1124
+ pub nxt_ppid: u32 ,
1125
+ pub nxt_length: u32 ,
1126
+ pub nxt_assoc_id: :: sctp_assoc_t,
1127
+ }
1022
1128
}
1023
1129
1024
1130
s_no_extra_traits ! {
@@ -1229,6 +1335,27 @@ s_no_extra_traits! {
1229
1335
pub ifdr_vendor: u32 ,
1230
1336
pub ifdr_msg: [ :: c_char; :: IFDR_MSG_SIZE as usize ] ,
1231
1337
}
1338
+
1339
+ #[ repr( packed) ]
1340
+ pub struct sctphdr {
1341
+ pub src_port: u16 ,
1342
+ pub dest_port: u16 ,
1343
+ pub v_tag: u32 ,
1344
+ pub checksum: u32 ,
1345
+ }
1346
+
1347
+ #[ repr( packed) ]
1348
+ pub struct sctp_chunkhdr {
1349
+ pub chunk_type: u8 ,
1350
+ pub chunk_flags: u8 ,
1351
+ pub chunk_length: u16 ,
1352
+ }
1353
+
1354
+ #[ repr( packed) ]
1355
+ pub struct sctp_paramhdr {
1356
+ pub param_type: u16 ,
1357
+ pub param_length: u16 ,
1358
+ }
1232
1359
}
1233
1360
1234
1361
cfg_if ! {
@@ -1890,6 +2017,81 @@ cfg_if! {
1890
2017
self . __ifi_lastchange. hash( state) ;
1891
2018
}
1892
2019
}
2020
+
2021
+ impl PartialEq for sctphdr {
2022
+ fn eq( & self , other: & sctphdr) -> bool {
2023
+ return { self . src_port} == { other. src_port} &&
2024
+ { self . dest_port} == { other. dest_port} &&
2025
+ { self . v_tag} == { other. v_tag} &&
2026
+ { self . checksum} == { other. checksum}
2027
+ }
2028
+ }
2029
+ impl Eq for sctphdr { }
2030
+ impl :: fmt:: Debug for sctphdr {
2031
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
2032
+ f. debug_struct( "sctphdr" )
2033
+ . field( "src_port" , & { self . src_port} )
2034
+ . field( "dest_port" , & { self . dest_port} )
2035
+ . field( "v_tag" , & { self . v_tag} )
2036
+ . field( "checksum" , & { self . checksum} )
2037
+ . finish( )
2038
+ }
2039
+ }
2040
+ impl :: hash:: Hash for sctphdr {
2041
+ fn hash<H : :: hash:: Hasher >( & self , state: & mut H ) {
2042
+ { self . src_port} . hash( state) ;
2043
+ { self . dest_port} . hash( state) ;
2044
+ { self . v_tag} . hash( state) ;
2045
+ { self . checksum} . hash( state) ;
2046
+ }
2047
+ }
2048
+
2049
+ impl PartialEq for sctp_chunkhdr {
2050
+ fn eq( & self , other: & sctp_chunkhdr) -> bool {
2051
+ return { self . chunk_type} == { other. chunk_type} &&
2052
+ { self . chunk_flags} == { other. chunk_flags} &&
2053
+ { self . chunk_length} == { other. chunk_length}
2054
+ }
2055
+ }
2056
+ impl Eq for sctp_chunkhdr { }
2057
+ impl :: fmt:: Debug for sctp_chunkhdr {
2058
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
2059
+ f. debug_struct( "sctp_chunkhdr" )
2060
+ . field( "chunk_type" , & { self . chunk_type} )
2061
+ . field( "chunk_flags" , & { self . chunk_flags} )
2062
+ . field( "chunk_length" , & { self . chunk_length} )
2063
+ . finish( )
2064
+ }
2065
+ }
2066
+ impl :: hash:: Hash for sctp_chunkhdr {
2067
+ fn hash<H : :: hash:: Hasher >( & self , state: & mut H ) {
2068
+ { self . chunk_type} . hash( state) ;
2069
+ { self . chunk_flags} . hash( state) ;
2070
+ { self . chunk_length} . hash( state) ;
2071
+ }
2072
+ }
2073
+
2074
+ impl PartialEq for sctp_paramhdr {
2075
+ fn eq( & self , other: & sctp_paramhdr) -> bool {
2076
+ return { self . param_type} == { other. param_type} &&
2077
+ { self . param_length} == { other. param_length}
2078
+ }
2079
+ }
2080
+ impl Eq for sctp_paramhdr { }
2081
+ impl :: fmt:: Debug for sctp_paramhdr {
2082
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
2083
+ f. debug_struct( "sctp_paramhdr" )
2084
+ . field( "param_type" , & { self . param_type} )
2085
+ . field( "param_length" , & { self . param_length} )
2086
+ . finish( )
2087
+ }
2088
+ }
2089
+ impl :: hash:: Hash for sctp_paramhdr {
2090
+ fn hash<H : :: hash:: Hasher >( & self , state: & mut H ) {
2091
+ { self . param_type} . hash( state) ;
2092
+ { self . param_length} . hash( state) ;
2093
+ }
2094
+ }
1893
2095
}
1894
2096
}
1895
2097
@@ -3818,6 +4020,54 @@ pub const SIGTHR: ::c_int = 32;
3818
4020
pub const SIGLWP : :: c_int = SIGTHR ;
3819
4021
pub const SIGLIBRT : :: c_int = 33 ;
3820
4022
4023
+ // netinet/sctp.h
4024
+ pub const SCTP_FUTURE_ASSOC : :: c_int = 0 ;
4025
+ pub const SCTP_CURRENT_ASSOC : :: c_int = 1 ;
4026
+ pub const SCTP_ALL_ASSOC : :: c_int = 2 ;
4027
+
4028
+ pub const SCTP_INIT : :: c_int = 0x0001 ;
4029
+ pub const SCTP_SNDRCV : :: c_int = 0x0002 ;
4030
+ pub const SCTP_EXTRCV : :: c_int = 0x0003 ;
4031
+ pub const SCTP_SNDINFO : :: c_int = 0x0004 ;
4032
+ pub const SCTP_RCVINFO : :: c_int = 0x0005 ;
4033
+ pub const SCTP_NXTINFO : :: c_int = 0x0006 ;
4034
+ pub const SCTP_PRINFO : :: c_int = 0x0007 ;
4035
+ pub const SCTP_AUTHINFO : :: c_int = 0x0008 ;
4036
+ pub const SCTP_DSTADDRV4 : :: c_int = 0x0009 ;
4037
+ pub const SCTP_DSTADDRV6 : :: c_int = 0x000a ;
4038
+
4039
+ pub const SCTP_RTOINFO : :: c_int = 0x00000001 ;
4040
+ pub const SCTP_ASSOCINFO : :: c_int = 0x00000002 ;
4041
+ pub const SCTP_INITMSG : :: c_int = 0x00000003 ;
4042
+ pub const SCTP_NODELAY : :: c_int = 0x00000004 ;
4043
+ pub const SCTP_AUTOCLOSE : :: c_int = 0x00000005 ;
4044
+ pub const SCTP_SET_PEER_PRIMARY_ADDR : :: c_int = 0x00000006 ;
4045
+ pub const SCTP_PRIMARY_ADDR : :: c_int = 0x00000007 ;
4046
+ pub const SCTP_ADAPTATION_LAYER : :: c_int = 0x00000008 ;
4047
+ pub const SCTP_ADAPTION_LAYER : :: c_int = 0x00000008 ;
4048
+ pub const SCTP_DISABLE_FRAGMENTS : :: c_int = 0x00000009 ;
4049
+ pub const SCTP_PEER_ADDR_PARAMS : :: c_int = 0x0000000a ;
4050
+ pub const SCTP_DEFAULT_SEND_PARAM : :: c_int = 0x0000000b ;
4051
+ pub const SCTP_EVENTS : :: c_int = 0x0000000c ;
4052
+ pub const SCTP_I_WANT_MAPPED_V4_ADDR : :: c_int = 0x0000000d ;
4053
+ pub const SCTP_MAXSEG : :: c_int = 0x0000000e ;
4054
+ pub const SCTP_DELAYED_SACK : :: c_int = 0x0000000f ;
4055
+ pub const SCTP_FRAGMENT_INTERLEAVE : :: c_int = 0x00000010 ;
4056
+ pub const SCTP_PARTIAL_DELIVERY_POINT : :: c_int = 0x00000011 ;
4057
+ pub const SCTP_AUTH_CHUNK : :: c_int = 0x00000012 ;
4058
+ pub const SCTP_AUTH_KEY : :: c_int = 0x00000013 ;
4059
+ pub const SCTP_HMAC_IDENT : :: c_int = 0x00000014 ;
4060
+ pub const SCTP_AUTH_ACTIVE_KEY : :: c_int = 0x00000015 ;
4061
+ pub const SCTP_AUTH_DELETE_KEY : :: c_int = 0x00000016 ;
4062
+ pub const SCTP_USE_EXT_RCVINFO : :: c_int = 0x00000017 ;
4063
+ pub const SCTP_AUTO_ASCONF : :: c_int = 0x00000018 ;
4064
+ pub const SCTP_MAXBURST : :: c_int = 0x00000019 ;
4065
+ pub const SCTP_MAX_BURST : :: c_int = 0x00000019 ;
4066
+ pub const SCTP_CONTEXT : :: c_int = 0x0000001a ;
4067
+ pub const SCTP_EXPLICIT_EOR : :: c_int = 0x00000001b ;
4068
+ pub const SCTP_REUSE_PORT : :: c_int = 0x00000001c ;
4069
+ pub const SCTP_AUTH_DEACTIVATE_KEY : :: c_int = 0x00000001d ;
4070
+
3821
4071
const_fn ! {
3822
4072
{ const } fn _ALIGN( p: usize ) -> usize {
3823
4073
( p + _ALIGNBYTES) & !_ALIGNBYTES
0 commit comments