@@ -1380,6 +1380,14 @@ s_no_extra_traits! {
1380
1380
pub sdl_data: [ :: c_char; 46 ] ,
1381
1381
}
1382
1382
1383
+ pub struct sockaddr_nl {
1384
+ pub nl_len: :: c_uchar,
1385
+ pub nl_family: :: sa_family_t,
1386
+ nl_pad: :: c_ushort,
1387
+ pub nl_pid: u32 ,
1388
+ pub nl_groups: u32
1389
+ }
1390
+
1383
1391
pub struct mq_attr {
1384
1392
pub mq_flags: :: c_long,
1385
1393
pub mq_maxmsg: :: c_long,
@@ -1763,6 +1771,34 @@ cfg_if! {
1763
1771
}
1764
1772
}
1765
1773
1774
+ impl PartialEq for sockaddr_nl {
1775
+ fn eq( & self , other: & sockaddr_nl) -> bool {
1776
+ self . nl_len == other. nl_len &&
1777
+ self . nl_family == other. nl_family &&
1778
+ self . nl_pid == other. nl_pid &&
1779
+ self . nl_groups == other. nl_groups
1780
+ }
1781
+ }
1782
+ impl Eq for sockaddr_nl { }
1783
+ impl :: fmt:: Debug for sockaddr_nl {
1784
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
1785
+ f. debug_struct( "sockaddr_nl" )
1786
+ . field( "nl_len" , & self . nl_len)
1787
+ . field( "nl_family" , & self . nl_family)
1788
+ . field( "nl_pid" , & self . nl_pid)
1789
+ . field( "nl_groups" , & self . nl_groups)
1790
+ . finish( )
1791
+ }
1792
+ }
1793
+ impl :: hash:: Hash for sockaddr_nl {
1794
+ fn hash<H : :: hash:: Hasher >( & self , state: & mut H ) {
1795
+ self . nl_len. hash( state) ;
1796
+ self . nl_family. hash( state) ;
1797
+ self . nl_pid. hash( state) ;
1798
+ self . nl_groups. hash( state) ;
1799
+ }
1800
+ }
1801
+
1766
1802
impl PartialEq for mq_attr {
1767
1803
fn eq( & self , other: & mq_attr) -> bool {
1768
1804
self . mq_flags == other. mq_flags &&
@@ -2989,6 +3025,104 @@ pub const SO_TS_MONOTONIC: ::c_int = 3;
2989
3025
pub const SO_TS_DEFAULT : :: c_int = SO_TS_REALTIME_MICRO ;
2990
3026
pub const SO_TS_CLOCK_MAX : :: c_int = SO_TS_MONOTONIC ;
2991
3027
3028
+ /// netlink constants
3029
+
3030
+ // sys/socket.h
3031
+ pub const AF_NETLINK : :: c_int = 38 ;
3032
+ pub const PF_NETLINK : :: c_int = AF_NETLINK ;
3033
+
3034
+ // netlink/netlink.h
3035
+ pub const SOL_NETLINK : :: c_int = 270 ;
3036
+ pub const NETLINK_ADD_MEMBERSHIP : :: c_int = 1 ;
3037
+ pub const NETLINK_DROP_MEMBERSHIP : :: c_int = 2 ;
3038
+ pub const NETLINK_PKTINFO : :: c_int = 3 ;
3039
+ pub const NETLINK_BROADCAST_ERROR : :: c_int = 4 ;
3040
+ pub const NETLINK_NO_ENOBUFS : :: c_int = 5 ;
3041
+ pub const NETLINK_RX_RING : :: c_int = 6 ;
3042
+ pub const NETLINK_TX_RING : :: c_int = 7 ;
3043
+ pub const NETLINK_LISTEN_ALL_NSID : :: c_int = 8 ;
3044
+ pub const NETLINK_LIST_MEMBERSHIPS : :: c_int = 9 ;
3045
+ pub const NETLINK_CAP_ACK : :: c_int = 10 ;
3046
+ pub const NETLINK_EXT_ACK : :: c_int = 11 ;
3047
+ pub const NETLINK_GET_STRICT_CHK : :: c_int = 12 ;
3048
+ //
3049
+ pub const NLM_F_REQUEST : :: c_int = 0x01 ;
3050
+ pub const NLM_F_MULTI : :: c_int = 0x02 ;
3051
+ pub const NLM_F_ACK : :: c_int = 0x04 ;
3052
+ pub const NLM_F_ECHO : :: c_int = 0x08 ;
3053
+ pub const NLM_F_DUMP_INTR : :: c_int = 0x10 ;
3054
+ pub const NLM_F_DUMP_FILTERED : :: c_int = 0x20 ;
3055
+ //
3056
+ pub const NLM_F_ROOT : :: c_int = 0x100 ;
3057
+ pub const NLM_F_MATCH : :: c_int = 0x200 ;
3058
+ pub const NLM_F_ATOMIC : :: c_int = 0x400 ;
3059
+ pub const NLM_F_DUMP : :: c_int = NLM_F_ROOT | NLM_F_MATCH ;
3060
+ //
3061
+ pub const NLM_F_REPLACE : :: c_int = 0x100 ;
3062
+ pub const NLM_F_EXCL : :: c_int = 0x200 ;
3063
+ pub const NLM_F_CREATE : :: c_int = 0x400 ;
3064
+ pub const NLM_F_APPEND : :: c_int = 0x800 ;
3065
+ //
3066
+ pub const NLM_F_NONREC : :: c_int = 0x100 ;
3067
+ //
3068
+ pub const NLM_F_CAPPED : :: c_int = 0x100 ;
3069
+ pub const NLM_F_ACK_TLVS : :: c_int = 0x200 ;
3070
+ //
3071
+ pub const NLMSG_NOOP : :: c_int = 0x1 ;
3072
+ pub const NLMSG_ERROR : :: c_int = 0x2 ;
3073
+ pub const NLMSG_DONE : :: c_int = 0x3 ;
3074
+ pub const NLMSG_OVERRUN : :: c_int = 0x4 ;
3075
+ //
3076
+ pub const NETLINK_ROUTE : :: c_int = 0 ;
3077
+ pub const NETLINK_UNUSED : :: c_int = 1 ;
3078
+ pub const NETLINK_USERSOCK : :: c_int = 2 ;
3079
+ pub const NETLINK_FIREWALL : :: c_int = 3 ;
3080
+ pub const NETLINK_SOCK_DIAG : :: c_int = 4 ;
3081
+ pub const NETLINK_NFLOG : :: c_int = 5 ;
3082
+ pub const NETLINK_XFRM : :: c_int = 6 ;
3083
+ pub const NETLINK_SELINUX : :: c_int = 7 ;
3084
+ pub const NETLINK_ISCSI : :: c_int = 8 ;
3085
+ pub const NETLINK_AUDIT : :: c_int = 9 ;
3086
+ pub const NETLINK_FIB_LOOKUP : :: c_int = 10 ;
3087
+ pub const NETLINK_CONNECTOR : :: c_int = 11 ;
3088
+ pub const NETLINK_NETFILTER : :: c_int = 12 ;
3089
+ pub const NETLINK_IP6_FW : :: c_int = 13 ;
3090
+ pub const NETLINK_DNRTMSG : :: c_int = 14 ;
3091
+ pub const NETLINK_KOBJECT_UEVENT : :: c_int = 15 ;
3092
+ pub const NETLINK_GENERIC : :: c_int = 16 ;
3093
+ //
3094
+ const NL_ITEM_ALIGN_SIZE : :: c_int = 4 ; // mem::size_of::<u32>(); FIXME accept new dep?
3095
+ pub const NLMSG_ALIGNTO : :: c_int = NL_ITEM_ALIGN_SIZE ;
3096
+
3097
+ // netlink/netlink_generic.h
3098
+ pub const CTRL_CMD_UNSPEC : :: c_int = 0 ;
3099
+ pub const CTRL_CMD_NEWFAMILY : :: c_int = 1 ;
3100
+ pub const CTRL_CMD_DELFAMILY : :: c_int = 2 ;
3101
+ pub const CTRL_CMD_GETFAMILY : :: c_int = 3 ;
3102
+ pub const CTRL_CMD_NEWOPS : :: c_int = 4 ;
3103
+ pub const CTRL_CMD_DELOPS : :: c_int = 5 ;
3104
+ pub const CTRL_CMD_GETOPS : :: c_int = 6 ;
3105
+ pub const CTRL_CMD_NEWMCAST_GRP : :: c_int = 7 ;
3106
+ pub const CTRL_CMD_DELMCAST_GRP : :: c_int = 8 ;
3107
+ pub const CTRL_CMD_GETMCAST_GRP : :: c_int = 9 ;
3108
+ pub const CTRL_CMD_GETPOLICY : :: c_int = 10 ;
3109
+ //
3110
+ pub const CTRL_ATTR_UNSPEC : :: c_int = 0 ;
3111
+ pub const CTRL_ATTR_FAMILY_ID : :: c_int = 1 ;
3112
+ pub const CTRL_ATTR_FAMILY_NAME : :: c_int = 2 ;
3113
+ pub const CTRL_ATTR_VERSION : :: c_int = 3 ;
3114
+ pub const CTRL_ATTR_HDRSIZE : :: c_int = 4 ;
3115
+ pub const CTRL_ATTR_MAXATTR : :: c_int = 5 ;
3116
+ pub const CTRL_ATTR_OPS : :: c_int = 6 ;
3117
+ pub const CTRL_ATTR_MCAST_GROUPS : :: c_int = 7 ;
3118
+ pub const CTRL_ATTR_POLICY : :: c_int = 8 ;
3119
+ pub const CTRL_ATTR_OP_POLICY : :: c_int = 9 ;
3120
+ pub const CTRL_ATTR_OP : :: c_int = 10 ;
3121
+ //
3122
+ pub const CTRL_ATTR_MCAST_GRP_UNSPEC : :: c_int = 0 ;
3123
+ pub const CTRL_ATTR_MCAST_GRP_NAME : :: c_int = 1 ;
3124
+ pub const CTRL_ATTR_MCAST_GRP_ID : :: c_int = 2 ;
3125
+
2992
3126
pub const LOCAL_CREDS : :: c_int = 2 ;
2993
3127
pub const LOCAL_CREDS_PERSISTENT : :: c_int = 3 ;
2994
3128
pub const LOCAL_CONNWAIT : :: c_int = 4 ;
0 commit comments