1// Copyright 2009 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// +build ignore
6
7/*
8Input to cgo -godefs.  See README.md
9*/
10
11// +godefs map struct_in_addr [4]byte /* in_addr */
12// +godefs map struct_in6_addr [16]byte /* in6_addr */
13
14package unix
15
16/*
17#define _LARGEFILE_SOURCE
18#define _LARGEFILE64_SOURCE
19#define _FILE_OFFSET_BITS 64
20#define _GNU_SOURCE
21
22#include <dirent.h>
23#include <netinet/in.h>
24#include <netinet/tcp.h>
25#include <netpacket/packet.h>
26#include <poll.h>
27#include <signal.h>
28#include <stdio.h>
29#include <sys/epoll.h>
30#include <sys/inotify.h>
31#include <sys/ioctl.h>
32#include <sys/mman.h>
33#include <sys/mount.h>
34#include <sys/param.h>
35#include <sys/ptrace.h>
36#include <sys/resource.h>
37#include <sys/select.h>
38#include <sys/signal.h>
39#include <sys/statfs.h>
40#include <sys/sysinfo.h>
41#include <sys/time.h>
42#include <sys/times.h>
43#include <sys/timex.h>
44#include <sys/un.h>
45#include <sys/user.h>
46#include <sys/utsname.h>
47#include <sys/wait.h>
48#include <linux/filter.h>
49#include <linux/keyctl.h>
50#include <linux/netlink.h>
51#include <linux/perf_event.h>
52#include <linux/rtnetlink.h>
53#include <linux/icmpv6.h>
54#include <asm/termbits.h>
55#include <asm/ptrace.h>
56#include <time.h>
57#include <unistd.h>
58#include <ustat.h>
59#include <utime.h>
60#include <linux/can.h>
61#include <linux/if_alg.h>
62#include <linux/fs.h>
63#include <linux/vm_sockets.h>
64#include <linux/random.h>
65#include <linux/taskstats.h>
66#include <linux/genetlink.h>
67
68// On mips64, the glibc stat and kernel stat do not agree
69#if (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64)
70
71// Use the stat defined by the kernel with a few modifications. These are:
72//	* The time fields (like st_atime and st_atimensec) use the timespec
73//	  struct (like st_atim) for consitancy with the glibc fields.
74//	* The padding fields get different names to not break compatibility.
75//	* st_blocks is signed, again for compatibility.
76struct stat {
77	unsigned int		st_dev;
78	unsigned int		st_pad1[3]; // Reserved for st_dev expansion
79
80	unsigned long		st_ino;
81
82	mode_t			st_mode;
83	__u32			st_nlink;
84
85	uid_t			st_uid;
86	gid_t			st_gid;
87
88	unsigned int		st_rdev;
89	unsigned int		st_pad2[3]; // Reserved for st_rdev expansion
90
91	off_t			st_size;
92
93	// These are declared as speperate fields in the kernel. Here we use
94	// the timespec struct for consistancy with the other stat structs.
95	struct timespec		st_atim;
96	struct timespec		st_mtim;
97	struct timespec		st_ctim;
98
99	unsigned int		st_blksize;
100	unsigned int		st_pad4;
101
102	long			st_blocks;
103};
104
105// These are needed because we do not include fcntl.h or sys/types.h
106#include <linux/fcntl.h>
107#include <linux/fadvise.h>
108
109#else
110
111// Use the stat defined by glibc
112#include <fcntl.h>
113#include <sys/types.h>
114
115#endif
116
117#ifdef TCSETS2
118// On systems that have "struct termios2" use this as type Termios.
119typedef struct termios2 termios_t;
120#else
121typedef struct termios termios_t;
122#endif
123
124enum {
125	sizeofPtr = sizeof(void*),
126};
127
128union sockaddr_all {
129	struct sockaddr s1;	// this one gets used for fields
130	struct sockaddr_in s2;	// these pad it out
131	struct sockaddr_in6 s3;
132	struct sockaddr_un s4;
133	struct sockaddr_ll s5;
134	struct sockaddr_nl s6;
135};
136
137struct sockaddr_any {
138	struct sockaddr addr;
139	char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
140};
141
142// copied from /usr/include/bluetooth/hci.h
143struct sockaddr_hci {
144        sa_family_t     hci_family;
145        unsigned short  hci_dev;
146        unsigned short  hci_channel;
147};;
148
149// copied from /usr/include/linux/un.h
150struct my_sockaddr_un {
151	sa_family_t sun_family;
152#if defined(__ARM_EABI__) || defined(__powerpc64__)
153	// on ARM char is by default unsigned
154	signed char sun_path[108];
155#else
156	char sun_path[108];
157#endif
158};
159
160#ifdef __ARM_EABI__
161typedef struct user_regs PtraceRegs;
162#elif defined(__aarch64__)
163typedef struct user_pt_regs PtraceRegs;
164#elif defined(__mips__) || defined(__powerpc64__)
165typedef struct pt_regs PtraceRegs;
166#elif defined(__s390x__)
167typedef struct _user_regs_struct PtraceRegs;
168#elif defined(__sparc__)
169#include <asm/ptrace.h>
170typedef struct pt_regs PtraceRegs;
171#else
172typedef struct user_regs_struct PtraceRegs;
173#endif
174
175#if defined(__s390x__)
176typedef struct _user_psw_struct ptracePsw;
177typedef struct _user_fpregs_struct ptraceFpregs;
178typedef struct _user_per_struct ptracePer;
179#else
180typedef struct {} ptracePsw;
181typedef struct {} ptraceFpregs;
182typedef struct {} ptracePer;
183#endif
184
185// The real epoll_event is a union, and godefs doesn't handle it well.
186struct my_epoll_event {
187	uint32_t events;
188#if defined(__ARM_EABI__) || defined(__aarch64__) || (defined(__mips__) && _MIPS_SIM == _ABIO32)
189	// padding is not specified in linux/eventpoll.h but added to conform to the
190	// alignment requirements of EABI
191	int32_t padFd;
192#elif defined(__powerpc64__) || defined(__s390x__) || defined(__sparc__)
193	int32_t _padFd;
194#endif
195	int32_t fd;
196	int32_t pad;
197};
198
199*/
200import "C"
201
202// Machine characteristics; for internal use.
203
204const (
205	sizeofPtr      = C.sizeofPtr
206	sizeofShort    = C.sizeof_short
207	sizeofInt      = C.sizeof_int
208	sizeofLong     = C.sizeof_long
209	sizeofLongLong = C.sizeof_longlong
210	PathMax        = C.PATH_MAX
211)
212
213// Basic types
214
215type (
216	_C_short     C.short
217	_C_int       C.int
218	_C_long      C.long
219	_C_long_long C.longlong
220)
221
222// Time
223
224type Timespec C.struct_timespec
225
226type Timeval C.struct_timeval
227
228type Timex C.struct_timex
229
230type Time_t C.time_t
231
232type Tms C.struct_tms
233
234type Utimbuf C.struct_utimbuf
235
236// Processes
237
238type Rusage C.struct_rusage
239
240type Rlimit C.struct_rlimit
241
242type _Gid_t C.gid_t
243
244// Files
245
246type Stat_t C.struct_stat
247
248type Statfs_t C.struct_statfs
249
250type Dirent C.struct_dirent
251
252type Fsid C.fsid_t
253
254type Flock_t C.struct_flock
255
256// Filesystem Encryption
257
258type FscryptPolicy C.struct_fscrypt_policy
259
260type FscryptKey C.struct_fscrypt_key
261
262// Structure for Keyctl
263
264type KeyctlDHParams C.struct_keyctl_dh_params
265
266// Advice to Fadvise
267
268const (
269	FADV_NORMAL     = C.POSIX_FADV_NORMAL
270	FADV_RANDOM     = C.POSIX_FADV_RANDOM
271	FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL
272	FADV_WILLNEED   = C.POSIX_FADV_WILLNEED
273	FADV_DONTNEED   = C.POSIX_FADV_DONTNEED
274	FADV_NOREUSE    = C.POSIX_FADV_NOREUSE
275)
276
277// Sockets
278
279type RawSockaddrInet4 C.struct_sockaddr_in
280
281type RawSockaddrInet6 C.struct_sockaddr_in6
282
283type RawSockaddrUnix C.struct_my_sockaddr_un
284
285type RawSockaddrLinklayer C.struct_sockaddr_ll
286
287type RawSockaddrNetlink C.struct_sockaddr_nl
288
289type RawSockaddrHCI C.struct_sockaddr_hci
290
291type RawSockaddrCAN C.struct_sockaddr_can
292
293type RawSockaddrALG C.struct_sockaddr_alg
294
295type RawSockaddrVM C.struct_sockaddr_vm
296
297type RawSockaddr C.struct_sockaddr
298
299type RawSockaddrAny C.struct_sockaddr_any
300
301type _Socklen C.socklen_t
302
303type Linger C.struct_linger
304
305type Iovec C.struct_iovec
306
307type IPMreq C.struct_ip_mreq
308
309type IPMreqn C.struct_ip_mreqn
310
311type IPv6Mreq C.struct_ipv6_mreq
312
313type PacketMreq C.struct_packet_mreq
314
315type Msghdr C.struct_msghdr
316
317type Cmsghdr C.struct_cmsghdr
318
319type Inet4Pktinfo C.struct_in_pktinfo
320
321type Inet6Pktinfo C.struct_in6_pktinfo
322
323type IPv6MTUInfo C.struct_ip6_mtuinfo
324
325type ICMPv6Filter C.struct_icmp6_filter
326
327type Ucred C.struct_ucred
328
329type TCPInfo C.struct_tcp_info
330
331const (
332	SizeofSockaddrInet4     = C.sizeof_struct_sockaddr_in
333	SizeofSockaddrInet6     = C.sizeof_struct_sockaddr_in6
334	SizeofSockaddrAny       = C.sizeof_struct_sockaddr_any
335	SizeofSockaddrUnix      = C.sizeof_struct_sockaddr_un
336	SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll
337	SizeofSockaddrNetlink   = C.sizeof_struct_sockaddr_nl
338	SizeofSockaddrHCI       = C.sizeof_struct_sockaddr_hci
339	SizeofSockaddrCAN       = C.sizeof_struct_sockaddr_can
340	SizeofSockaddrALG       = C.sizeof_struct_sockaddr_alg
341	SizeofSockaddrVM        = C.sizeof_struct_sockaddr_vm
342	SizeofLinger            = C.sizeof_struct_linger
343	SizeofIovec             = C.sizeof_struct_iovec
344	SizeofIPMreq            = C.sizeof_struct_ip_mreq
345	SizeofIPMreqn           = C.sizeof_struct_ip_mreqn
346	SizeofIPv6Mreq          = C.sizeof_struct_ipv6_mreq
347	SizeofPacketMreq        = C.sizeof_struct_packet_mreq
348	SizeofMsghdr            = C.sizeof_struct_msghdr
349	SizeofCmsghdr           = C.sizeof_struct_cmsghdr
350	SizeofInet4Pktinfo      = C.sizeof_struct_in_pktinfo
351	SizeofInet6Pktinfo      = C.sizeof_struct_in6_pktinfo
352	SizeofIPv6MTUInfo       = C.sizeof_struct_ip6_mtuinfo
353	SizeofICMPv6Filter      = C.sizeof_struct_icmp6_filter
354	SizeofUcred             = C.sizeof_struct_ucred
355	SizeofTCPInfo           = C.sizeof_struct_tcp_info
356)
357
358// Netlink routing and interface messages
359
360const (
361	IFA_UNSPEC          = C.IFA_UNSPEC
362	IFA_ADDRESS         = C.IFA_ADDRESS
363	IFA_LOCAL           = C.IFA_LOCAL
364	IFA_LABEL           = C.IFA_LABEL
365	IFA_BROADCAST       = C.IFA_BROADCAST
366	IFA_ANYCAST         = C.IFA_ANYCAST
367	IFA_CACHEINFO       = C.IFA_CACHEINFO
368	IFA_MULTICAST       = C.IFA_MULTICAST
369	IFLA_UNSPEC         = C.IFLA_UNSPEC
370	IFLA_ADDRESS        = C.IFLA_ADDRESS
371	IFLA_BROADCAST      = C.IFLA_BROADCAST
372	IFLA_IFNAME         = C.IFLA_IFNAME
373	IFLA_MTU            = C.IFLA_MTU
374	IFLA_LINK           = C.IFLA_LINK
375	IFLA_QDISC          = C.IFLA_QDISC
376	IFLA_STATS          = C.IFLA_STATS
377	IFLA_COST           = C.IFLA_COST
378	IFLA_PRIORITY       = C.IFLA_PRIORITY
379	IFLA_MASTER         = C.IFLA_MASTER
380	IFLA_WIRELESS       = C.IFLA_WIRELESS
381	IFLA_PROTINFO       = C.IFLA_PROTINFO
382	IFLA_TXQLEN         = C.IFLA_TXQLEN
383	IFLA_MAP            = C.IFLA_MAP
384	IFLA_WEIGHT         = C.IFLA_WEIGHT
385	IFLA_OPERSTATE      = C.IFLA_OPERSTATE
386	IFLA_LINKMODE       = C.IFLA_LINKMODE
387	IFLA_LINKINFO       = C.IFLA_LINKINFO
388	IFLA_NET_NS_PID     = C.IFLA_NET_NS_PID
389	IFLA_IFALIAS        = C.IFLA_IFALIAS
390	IFLA_MAX            = C.IFLA_MAX
391	RT_SCOPE_UNIVERSE   = C.RT_SCOPE_UNIVERSE
392	RT_SCOPE_SITE       = C.RT_SCOPE_SITE
393	RT_SCOPE_LINK       = C.RT_SCOPE_LINK
394	RT_SCOPE_HOST       = C.RT_SCOPE_HOST
395	RT_SCOPE_NOWHERE    = C.RT_SCOPE_NOWHERE
396	RT_TABLE_UNSPEC     = C.RT_TABLE_UNSPEC
397	RT_TABLE_COMPAT     = C.RT_TABLE_COMPAT
398	RT_TABLE_DEFAULT    = C.RT_TABLE_DEFAULT
399	RT_TABLE_MAIN       = C.RT_TABLE_MAIN
400	RT_TABLE_LOCAL      = C.RT_TABLE_LOCAL
401	RT_TABLE_MAX        = C.RT_TABLE_MAX
402	RTA_UNSPEC          = C.RTA_UNSPEC
403	RTA_DST             = C.RTA_DST
404	RTA_SRC             = C.RTA_SRC
405	RTA_IIF             = C.RTA_IIF
406	RTA_OIF             = C.RTA_OIF
407	RTA_GATEWAY         = C.RTA_GATEWAY
408	RTA_PRIORITY        = C.RTA_PRIORITY
409	RTA_PREFSRC         = C.RTA_PREFSRC
410	RTA_METRICS         = C.RTA_METRICS
411	RTA_MULTIPATH       = C.RTA_MULTIPATH
412	RTA_FLOW            = C.RTA_FLOW
413	RTA_CACHEINFO       = C.RTA_CACHEINFO
414	RTA_TABLE           = C.RTA_TABLE
415	RTN_UNSPEC          = C.RTN_UNSPEC
416	RTN_UNICAST         = C.RTN_UNICAST
417	RTN_LOCAL           = C.RTN_LOCAL
418	RTN_BROADCAST       = C.RTN_BROADCAST
419	RTN_ANYCAST         = C.RTN_ANYCAST
420	RTN_MULTICAST       = C.RTN_MULTICAST
421	RTN_BLACKHOLE       = C.RTN_BLACKHOLE
422	RTN_UNREACHABLE     = C.RTN_UNREACHABLE
423	RTN_PROHIBIT        = C.RTN_PROHIBIT
424	RTN_THROW           = C.RTN_THROW
425	RTN_NAT             = C.RTN_NAT
426	RTN_XRESOLVE        = C.RTN_XRESOLVE
427	RTNLGRP_NONE        = C.RTNLGRP_NONE
428	RTNLGRP_LINK        = C.RTNLGRP_LINK
429	RTNLGRP_NOTIFY      = C.RTNLGRP_NOTIFY
430	RTNLGRP_NEIGH       = C.RTNLGRP_NEIGH
431	RTNLGRP_TC          = C.RTNLGRP_TC
432	RTNLGRP_IPV4_IFADDR = C.RTNLGRP_IPV4_IFADDR
433	RTNLGRP_IPV4_MROUTE = C.RTNLGRP_IPV4_MROUTE
434	RTNLGRP_IPV4_ROUTE  = C.RTNLGRP_IPV4_ROUTE
435	RTNLGRP_IPV4_RULE   = C.RTNLGRP_IPV4_RULE
436	RTNLGRP_IPV6_IFADDR = C.RTNLGRP_IPV6_IFADDR
437	RTNLGRP_IPV6_MROUTE = C.RTNLGRP_IPV6_MROUTE
438	RTNLGRP_IPV6_ROUTE  = C.RTNLGRP_IPV6_ROUTE
439	RTNLGRP_IPV6_IFINFO = C.RTNLGRP_IPV6_IFINFO
440	RTNLGRP_IPV6_PREFIX = C.RTNLGRP_IPV6_PREFIX
441	RTNLGRP_IPV6_RULE   = C.RTNLGRP_IPV6_RULE
442	RTNLGRP_ND_USEROPT  = C.RTNLGRP_ND_USEROPT
443	SizeofNlMsghdr      = C.sizeof_struct_nlmsghdr
444	SizeofNlMsgerr      = C.sizeof_struct_nlmsgerr
445	SizeofRtGenmsg      = C.sizeof_struct_rtgenmsg
446	SizeofNlAttr        = C.sizeof_struct_nlattr
447	SizeofRtAttr        = C.sizeof_struct_rtattr
448	SizeofIfInfomsg     = C.sizeof_struct_ifinfomsg
449	SizeofIfAddrmsg     = C.sizeof_struct_ifaddrmsg
450	SizeofRtMsg         = C.sizeof_struct_rtmsg
451	SizeofRtNexthop     = C.sizeof_struct_rtnexthop
452)
453
454type NlMsghdr C.struct_nlmsghdr
455
456type NlMsgerr C.struct_nlmsgerr
457
458type RtGenmsg C.struct_rtgenmsg
459
460type NlAttr C.struct_nlattr
461
462type RtAttr C.struct_rtattr
463
464type IfInfomsg C.struct_ifinfomsg
465
466type IfAddrmsg C.struct_ifaddrmsg
467
468type RtMsg C.struct_rtmsg
469
470type RtNexthop C.struct_rtnexthop
471
472// Linux socket filter
473
474const (
475	SizeofSockFilter = C.sizeof_struct_sock_filter
476	SizeofSockFprog  = C.sizeof_struct_sock_fprog
477)
478
479type SockFilter C.struct_sock_filter
480
481type SockFprog C.struct_sock_fprog
482
483// Inotify
484
485type InotifyEvent C.struct_inotify_event
486
487const SizeofInotifyEvent = C.sizeof_struct_inotify_event
488
489// Ptrace
490
491// Register structures
492type PtraceRegs C.PtraceRegs
493
494// Structures contained in PtraceRegs on s390x (exported by mkpost.go)
495type PtracePsw C.ptracePsw
496
497type PtraceFpregs C.ptraceFpregs
498
499type PtracePer C.ptracePer
500
501// Misc
502
503type FdSet C.fd_set
504
505type Sysinfo_t C.struct_sysinfo
506
507type Utsname C.struct_utsname
508
509type Ustat_t C.struct_ustat
510
511type EpollEvent C.struct_my_epoll_event
512
513const (
514	AT_FDCWD            = C.AT_FDCWD
515	AT_REMOVEDIR        = C.AT_REMOVEDIR
516	AT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW
517	AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
518)
519
520type PollFd C.struct_pollfd
521
522const (
523	POLLIN    = C.POLLIN
524	POLLPRI   = C.POLLPRI
525	POLLOUT   = C.POLLOUT
526	POLLRDHUP = C.POLLRDHUP
527	POLLERR   = C.POLLERR
528	POLLHUP   = C.POLLHUP
529	POLLNVAL  = C.POLLNVAL
530)
531
532type Sigset_t C.sigset_t
533
534const RNDGETENTCNT = C.RNDGETENTCNT
535
536const PERF_IOC_FLAG_GROUP = C.PERF_IOC_FLAG_GROUP
537
538// Terminal handling
539
540type Termios C.termios_t
541
542type Winsize C.struct_winsize
543
544// Taskstats
545
546type Taskstats C.struct_taskstats
547
548const (
549	TASKSTATS_CMD_UNSPEC                  = C.TASKSTATS_CMD_UNSPEC
550	TASKSTATS_CMD_GET                     = C.TASKSTATS_CMD_GET
551	TASKSTATS_CMD_NEW                     = C.TASKSTATS_CMD_NEW
552	TASKSTATS_TYPE_UNSPEC                 = C.TASKSTATS_TYPE_UNSPEC
553	TASKSTATS_TYPE_PID                    = C.TASKSTATS_TYPE_PID
554	TASKSTATS_TYPE_TGID                   = C.TASKSTATS_TYPE_TGID
555	TASKSTATS_TYPE_STATS                  = C.TASKSTATS_TYPE_STATS
556	TASKSTATS_TYPE_AGGR_PID               = C.TASKSTATS_TYPE_AGGR_PID
557	TASKSTATS_TYPE_AGGR_TGID              = C.TASKSTATS_TYPE_AGGR_TGID
558	TASKSTATS_TYPE_NULL                   = C.TASKSTATS_TYPE_NULL
559	TASKSTATS_CMD_ATTR_UNSPEC             = C.TASKSTATS_CMD_ATTR_UNSPEC
560	TASKSTATS_CMD_ATTR_PID                = C.TASKSTATS_CMD_ATTR_PID
561	TASKSTATS_CMD_ATTR_TGID               = C.TASKSTATS_CMD_ATTR_TGID
562	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = C.TASKSTATS_CMD_ATTR_REGISTER_CPUMASK
563	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = C.TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK
564)
565
566// Generic netlink
567
568type Genlmsghdr C.struct_genlmsghdr
569
570const (
571	CTRL_CMD_UNSPEC            = C.CTRL_CMD_UNSPEC
572	CTRL_CMD_NEWFAMILY         = C.CTRL_CMD_NEWFAMILY
573	CTRL_CMD_DELFAMILY         = C.CTRL_CMD_DELFAMILY
574	CTRL_CMD_GETFAMILY         = C.CTRL_CMD_GETFAMILY
575	CTRL_CMD_NEWOPS            = C.CTRL_CMD_NEWOPS
576	CTRL_CMD_DELOPS            = C.CTRL_CMD_DELOPS
577	CTRL_CMD_GETOPS            = C.CTRL_CMD_GETOPS
578	CTRL_CMD_NEWMCAST_GRP      = C.CTRL_CMD_NEWMCAST_GRP
579	CTRL_CMD_DELMCAST_GRP      = C.CTRL_CMD_DELMCAST_GRP
580	CTRL_CMD_GETMCAST_GRP      = C.CTRL_CMD_GETMCAST_GRP
581	CTRL_ATTR_UNSPEC           = C.CTRL_ATTR_UNSPEC
582	CTRL_ATTR_FAMILY_ID        = C.CTRL_ATTR_FAMILY_ID
583	CTRL_ATTR_FAMILY_NAME      = C.CTRL_ATTR_FAMILY_NAME
584	CTRL_ATTR_VERSION          = C.CTRL_ATTR_VERSION
585	CTRL_ATTR_HDRSIZE          = C.CTRL_ATTR_HDRSIZE
586	CTRL_ATTR_MAXATTR          = C.CTRL_ATTR_MAXATTR
587	CTRL_ATTR_OPS              = C.CTRL_ATTR_OPS
588	CTRL_ATTR_MCAST_GROUPS     = C.CTRL_ATTR_MCAST_GROUPS
589	CTRL_ATTR_OP_UNSPEC        = C.CTRL_ATTR_OP_UNSPEC
590	CTRL_ATTR_OP_ID            = C.CTRL_ATTR_OP_ID
591	CTRL_ATTR_OP_FLAGS         = C.CTRL_ATTR_OP_FLAGS
592	CTRL_ATTR_MCAST_GRP_UNSPEC = C.CTRL_ATTR_MCAST_GRP_UNSPEC
593	CTRL_ATTR_MCAST_GRP_NAME   = C.CTRL_ATTR_MCAST_GRP_NAME
594	CTRL_ATTR_MCAST_GRP_ID     = C.CTRL_ATTR_MCAST_GRP_ID
595)
596