]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/missing.h
Merge pull request #8175 from keszybz/gc-cleanup
[thirdparty/systemd.git] / src / basic / missing.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
2 #pragma once
3
4 /***
5 This file is part of systemd.
6
7 Copyright 2010 Lennart Poettering
8
9 systemd is free software; you can redistribute it and/or modify it
10 under the terms of the GNU Lesser General Public License as published by
11 the Free Software Foundation; either version 2.1 of the License, or
12 (at your option) any later version.
13
14 systemd is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 Lesser General Public License for more details.
18
19 You should have received a copy of the GNU Lesser General Public License
20 along with systemd; If not, see <http://www.gnu.org/licenses/>.
21 ***/
22
23 /* Missing glibc definitions to access certain kernel APIs */
24
25 #include <errno.h>
26 #include <fcntl.h>
27 #include <inttypes.h>
28 #include <linux/audit.h>
29 #include <linux/capability.h>
30 #include <linux/falloc.h>
31 #include <linux/if_link.h>
32 #include <linux/input.h>
33 #include <linux/loop.h>
34 #include <linux/neighbour.h>
35 #include <linux/oom.h>
36 #include <linux/rtnetlink.h>
37 #include <net/ethernet.h>
38 #include <stdlib.h>
39 #include <sys/resource.h>
40 #include <sys/socket.h>
41 #include <sys/syscall.h>
42 #include <uchar.h>
43 #include <unistd.h>
44
45 #if HAVE_AUDIT
46 #include <libaudit.h>
47 #endif
48
49 #ifdef ARCH_MIPS
50 #include <asm/sgidefs.h>
51 #endif
52
53 #if HAVE_LINUX_BTRFS_H
54 #include <linux/btrfs.h>
55 #endif
56
57 #if HAVE_LINUX_VM_SOCKETS_H
58 #include <linux/vm_sockets.h>
59 #else
60 #define VMADDR_CID_ANY -1U
61 struct sockaddr_vm {
62 unsigned short svm_family;
63 unsigned short svm_reserved1;
64 unsigned int svm_port;
65 unsigned int svm_cid;
66 unsigned char svm_zero[sizeof(struct sockaddr) -
67 sizeof(unsigned short) -
68 sizeof(unsigned short) -
69 sizeof(unsigned int) -
70 sizeof(unsigned int)];
71 };
72 #endif /* !HAVE_LINUX_VM_SOCKETS_H */
73
74 #ifndef RLIMIT_RTTIME
75 #define RLIMIT_RTTIME 15
76 #endif
77
78 /* If RLIMIT_RTTIME is not defined, then we cannot use RLIMIT_NLIMITS as is */
79 #define _RLIMIT_MAX (RLIMIT_RTTIME+1 > RLIMIT_NLIMITS ? RLIMIT_RTTIME+1 : RLIMIT_NLIMITS)
80
81 #ifndef F_LINUX_SPECIFIC_BASE
82 #define F_LINUX_SPECIFIC_BASE 1024
83 #endif
84
85 #ifndef F_SETPIPE_SZ
86 #define F_SETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 7)
87 #endif
88
89 #ifndef F_GETPIPE_SZ
90 #define F_GETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 8)
91 #endif
92
93 #ifndef F_ADD_SEALS
94 #define F_ADD_SEALS (F_LINUX_SPECIFIC_BASE + 9)
95 #define F_GET_SEALS (F_LINUX_SPECIFIC_BASE + 10)
96
97 #define F_SEAL_SEAL 0x0001 /* prevent further seals from being set */
98 #define F_SEAL_SHRINK 0x0002 /* prevent file from shrinking */
99 #define F_SEAL_GROW 0x0004 /* prevent file from growing */
100 #define F_SEAL_WRITE 0x0008 /* prevent writes */
101 #endif
102
103 #ifndef F_OFD_GETLK
104 #define F_OFD_GETLK 36
105 #define F_OFD_SETLK 37
106 #define F_OFD_SETLKW 38
107 #endif
108
109 #ifndef MFD_ALLOW_SEALING
110 #define MFD_ALLOW_SEALING 0x0002U
111 #endif
112
113 #ifndef MFD_CLOEXEC
114 #define MFD_CLOEXEC 0x0001U
115 #endif
116
117 #ifndef IP_FREEBIND
118 #define IP_FREEBIND 15
119 #endif
120
121 #ifndef OOM_SCORE_ADJ_MIN
122 #define OOM_SCORE_ADJ_MIN (-1000)
123 #endif
124
125 #ifndef OOM_SCORE_ADJ_MAX
126 #define OOM_SCORE_ADJ_MAX 1000
127 #endif
128
129 #ifndef AUDIT_SERVICE_START
130 #define AUDIT_SERVICE_START 1130 /* Service (daemon) start */
131 #endif
132
133 #ifndef AUDIT_SERVICE_STOP
134 #define AUDIT_SERVICE_STOP 1131 /* Service (daemon) stop */
135 #endif
136
137 #ifndef TIOCVHANGUP
138 #define TIOCVHANGUP 0x5437
139 #endif
140
141 #ifndef IP_TRANSPARENT
142 #define IP_TRANSPARENT 19
143 #endif
144
145 #ifndef SOL_NETLINK
146 #define SOL_NETLINK 270
147 #endif
148
149 #ifndef NETLINK_LIST_MEMBERSHIPS
150 #define NETLINK_LIST_MEMBERSHIPS 9
151 #endif
152
153 #ifndef SOL_SCTP
154 #define SOL_SCTP 132
155 #endif
156
157 #ifndef GRND_NONBLOCK
158 #define GRND_NONBLOCK 0x0001
159 #endif
160
161 #ifndef GRND_RANDOM
162 #define GRND_RANDOM 0x0002
163 #endif
164
165 #ifndef FS_NOCOW_FL
166 #define FS_NOCOW_FL 0x00800000
167 #endif
168
169 #ifndef BTRFS_IOCTL_MAGIC
170 #define BTRFS_IOCTL_MAGIC 0x94
171 #endif
172
173 #ifndef BTRFS_PATH_NAME_MAX
174 #define BTRFS_PATH_NAME_MAX 4087
175 #endif
176
177 #ifndef BTRFS_DEVICE_PATH_NAME_MAX
178 #define BTRFS_DEVICE_PATH_NAME_MAX 1024
179 #endif
180
181 #ifndef BTRFS_FSID_SIZE
182 #define BTRFS_FSID_SIZE 16
183 #endif
184
185 #ifndef BTRFS_UUID_SIZE
186 #define BTRFS_UUID_SIZE 16
187 #endif
188
189 #ifndef BTRFS_SUBVOL_RDONLY
190 #define BTRFS_SUBVOL_RDONLY (1ULL << 1)
191 #endif
192
193 #ifndef BTRFS_SUBVOL_NAME_MAX
194 #define BTRFS_SUBVOL_NAME_MAX 4039
195 #endif
196
197 #ifndef BTRFS_INO_LOOKUP_PATH_MAX
198 #define BTRFS_INO_LOOKUP_PATH_MAX 4080
199 #endif
200
201 #ifndef BTRFS_SEARCH_ARGS_BUFSIZE
202 #define BTRFS_SEARCH_ARGS_BUFSIZE (4096 - sizeof(struct btrfs_ioctl_search_key))
203 #endif
204
205 #ifndef BTRFS_QGROUP_LEVEL_SHIFT
206 #define BTRFS_QGROUP_LEVEL_SHIFT 48
207 #endif
208
209 #if ! HAVE_LINUX_BTRFS_H
210 #define BTRFS_IOC_QGROUP_ASSIGN _IOW(BTRFS_IOCTL_MAGIC, 41, \
211 struct btrfs_ioctl_qgroup_assign_args)
212 #define BTRFS_IOC_QGROUP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 42, \
213 struct btrfs_ioctl_qgroup_create_args)
214 #define BTRFS_IOC_QUOTA_RESCAN _IOW(BTRFS_IOCTL_MAGIC, 44, \
215 struct btrfs_ioctl_quota_rescan_args)
216 #define BTRFS_IOC_QUOTA_RESCAN_STATUS _IOR(BTRFS_IOCTL_MAGIC, 45, \
217 struct btrfs_ioctl_quota_rescan_args)
218
219 struct btrfs_ioctl_quota_rescan_args {
220 __u64 flags;
221 __u64 progress;
222 __u64 reserved[6];
223 };
224
225 struct btrfs_ioctl_qgroup_assign_args {
226 __u64 assign;
227 __u64 src;
228 __u64 dst;
229 };
230
231 struct btrfs_ioctl_qgroup_create_args {
232 __u64 create;
233 __u64 qgroupid;
234 };
235
236 struct btrfs_ioctl_vol_args {
237 int64_t fd;
238 char name[BTRFS_PATH_NAME_MAX + 1];
239 };
240
241 struct btrfs_qgroup_limit {
242 __u64 flags;
243 __u64 max_rfer;
244 __u64 max_excl;
245 __u64 rsv_rfer;
246 __u64 rsv_excl;
247 };
248
249 struct btrfs_qgroup_inherit {
250 __u64 flags;
251 __u64 num_qgroups;
252 __u64 num_ref_copies;
253 __u64 num_excl_copies;
254 struct btrfs_qgroup_limit lim;
255 __u64 qgroups[0];
256 };
257
258 struct btrfs_ioctl_qgroup_limit_args {
259 __u64 qgroupid;
260 struct btrfs_qgroup_limit lim;
261 };
262
263 struct btrfs_ioctl_vol_args_v2 {
264 __s64 fd;
265 __u64 transid;
266 __u64 flags;
267 union {
268 struct {
269 __u64 size;
270 struct btrfs_qgroup_inherit *qgroup_inherit;
271 };
272 __u64 unused[4];
273 };
274 char name[BTRFS_SUBVOL_NAME_MAX + 1];
275 };
276
277 struct btrfs_ioctl_dev_info_args {
278 uint64_t devid; /* in/out */
279 uint8_t uuid[BTRFS_UUID_SIZE]; /* in/out */
280 uint64_t bytes_used; /* out */
281 uint64_t total_bytes; /* out */
282 uint64_t unused[379]; /* pad to 4k */
283 char path[BTRFS_DEVICE_PATH_NAME_MAX]; /* out */
284 };
285
286 struct btrfs_ioctl_fs_info_args {
287 uint64_t max_id; /* out */
288 uint64_t num_devices; /* out */
289 uint8_t fsid[BTRFS_FSID_SIZE]; /* out */
290 uint64_t reserved[124]; /* pad to 1k */
291 };
292
293 struct btrfs_ioctl_ino_lookup_args {
294 __u64 treeid;
295 __u64 objectid;
296 char name[BTRFS_INO_LOOKUP_PATH_MAX];
297 };
298
299 struct btrfs_ioctl_search_key {
300 /* which root are we searching. 0 is the tree of tree roots */
301 __u64 tree_id;
302
303 /* keys returned will be >= min and <= max */
304 __u64 min_objectid;
305 __u64 max_objectid;
306
307 /* keys returned will be >= min and <= max */
308 __u64 min_offset;
309 __u64 max_offset;
310
311 /* max and min transids to search for */
312 __u64 min_transid;
313 __u64 max_transid;
314
315 /* keys returned will be >= min and <= max */
316 __u32 min_type;
317 __u32 max_type;
318
319 /*
320 * how many items did userland ask for, and how many are we
321 * returning
322 */
323 __u32 nr_items;
324
325 /* align to 64 bits */
326 __u32 unused;
327
328 /* some extra for later */
329 __u64 unused1;
330 __u64 unused2;
331 __u64 unused3;
332 __u64 unused4;
333 };
334
335 struct btrfs_ioctl_search_header {
336 __u64 transid;
337 __u64 objectid;
338 __u64 offset;
339 __u32 type;
340 __u32 len;
341 };
342
343
344 struct btrfs_ioctl_search_args {
345 struct btrfs_ioctl_search_key key;
346 char buf[BTRFS_SEARCH_ARGS_BUFSIZE];
347 };
348
349 struct btrfs_ioctl_clone_range_args {
350 __s64 src_fd;
351 __u64 src_offset, src_length;
352 __u64 dest_offset;
353 };
354
355 #define BTRFS_QUOTA_CTL_ENABLE 1
356 #define BTRFS_QUOTA_CTL_DISABLE 2
357 #define BTRFS_QUOTA_CTL_RESCAN__NOTUSED 3
358 struct btrfs_ioctl_quota_ctl_args {
359 __u64 cmd;
360 __u64 status;
361 };
362 #endif
363
364 #ifndef BTRFS_IOC_DEFRAG
365 #define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, \
366 struct btrfs_ioctl_vol_args)
367 #endif
368
369 #ifndef BTRFS_IOC_RESIZE
370 #define BTRFS_IOC_RESIZE _IOW(BTRFS_IOCTL_MAGIC, 3, \
371 struct btrfs_ioctl_vol_args)
372 #endif
373
374 #ifndef BTRFS_IOC_CLONE
375 #define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int)
376 #endif
377
378 #ifndef BTRFS_IOC_CLONE_RANGE
379 #define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \
380 struct btrfs_ioctl_clone_range_args)
381 #endif
382
383 #ifndef BTRFS_IOC_SUBVOL_CREATE
384 #define BTRFS_IOC_SUBVOL_CREATE _IOW(BTRFS_IOCTL_MAGIC, 14, \
385 struct btrfs_ioctl_vol_args)
386 #endif
387
388 #ifndef BTRFS_IOC_SNAP_DESTROY
389 #define BTRFS_IOC_SNAP_DESTROY _IOW(BTRFS_IOCTL_MAGIC, 15, \
390 struct btrfs_ioctl_vol_args)
391 #endif
392
393 #ifndef BTRFS_IOC_TREE_SEARCH
394 #define BTRFS_IOC_TREE_SEARCH _IOWR(BTRFS_IOCTL_MAGIC, 17, \
395 struct btrfs_ioctl_search_args)
396 #endif
397
398 #ifndef BTRFS_IOC_INO_LOOKUP
399 #define BTRFS_IOC_INO_LOOKUP _IOWR(BTRFS_IOCTL_MAGIC, 18, \
400 struct btrfs_ioctl_ino_lookup_args)
401 #endif
402
403 #ifndef BTRFS_IOC_SNAP_CREATE_V2
404 #define BTRFS_IOC_SNAP_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 23, \
405 struct btrfs_ioctl_vol_args_v2)
406 #endif
407
408 #ifndef BTRFS_IOC_SUBVOL_GETFLAGS
409 #define BTRFS_IOC_SUBVOL_GETFLAGS _IOR(BTRFS_IOCTL_MAGIC, 25, __u64)
410 #endif
411
412 #ifndef BTRFS_IOC_SUBVOL_SETFLAGS
413 #define BTRFS_IOC_SUBVOL_SETFLAGS _IOW(BTRFS_IOCTL_MAGIC, 26, __u64)
414 #endif
415
416 #ifndef BTRFS_IOC_DEV_INFO
417 #define BTRFS_IOC_DEV_INFO _IOWR(BTRFS_IOCTL_MAGIC, 30, \
418 struct btrfs_ioctl_dev_info_args)
419 #endif
420
421 #ifndef BTRFS_IOC_FS_INFO
422 #define BTRFS_IOC_FS_INFO _IOR(BTRFS_IOCTL_MAGIC, 31, \
423 struct btrfs_ioctl_fs_info_args)
424 #endif
425
426 #ifndef BTRFS_IOC_DEVICES_READY
427 #define BTRFS_IOC_DEVICES_READY _IOR(BTRFS_IOCTL_MAGIC, 39, \
428 struct btrfs_ioctl_vol_args)
429 #endif
430
431 #ifndef BTRFS_IOC_QUOTA_CTL
432 #define BTRFS_IOC_QUOTA_CTL _IOWR(BTRFS_IOCTL_MAGIC, 40, \
433 struct btrfs_ioctl_quota_ctl_args)
434 #endif
435
436 #ifndef BTRFS_IOC_QGROUP_LIMIT
437 #define BTRFS_IOC_QGROUP_LIMIT _IOR(BTRFS_IOCTL_MAGIC, 43, \
438 struct btrfs_ioctl_qgroup_limit_args)
439 #endif
440
441 #ifndef BTRFS_IOC_QUOTA_RESCAN_WAIT
442 #define BTRFS_IOC_QUOTA_RESCAN_WAIT _IO(BTRFS_IOCTL_MAGIC, 46)
443 #endif
444
445 #ifndef BTRFS_FIRST_FREE_OBJECTID
446 #define BTRFS_FIRST_FREE_OBJECTID 256
447 #endif
448
449 #ifndef BTRFS_LAST_FREE_OBJECTID
450 #define BTRFS_LAST_FREE_OBJECTID -256ULL
451 #endif
452
453 #ifndef BTRFS_ROOT_TREE_OBJECTID
454 #define BTRFS_ROOT_TREE_OBJECTID 1
455 #endif
456
457 #ifndef BTRFS_QUOTA_TREE_OBJECTID
458 #define BTRFS_QUOTA_TREE_OBJECTID 8ULL
459 #endif
460
461 #ifndef BTRFS_ROOT_ITEM_KEY
462 #define BTRFS_ROOT_ITEM_KEY 132
463 #endif
464
465 #ifndef BTRFS_QGROUP_STATUS_KEY
466 #define BTRFS_QGROUP_STATUS_KEY 240
467 #endif
468
469 #ifndef BTRFS_QGROUP_INFO_KEY
470 #define BTRFS_QGROUP_INFO_KEY 242
471 #endif
472
473 #ifndef BTRFS_QGROUP_LIMIT_KEY
474 #define BTRFS_QGROUP_LIMIT_KEY 244
475 #endif
476
477 #ifndef BTRFS_QGROUP_RELATION_KEY
478 #define BTRFS_QGROUP_RELATION_KEY 246
479 #endif
480
481 #ifndef BTRFS_ROOT_BACKREF_KEY
482 #define BTRFS_ROOT_BACKREF_KEY 144
483 #endif
484
485 #ifndef BTRFS_SUPER_MAGIC
486 #define BTRFS_SUPER_MAGIC 0x9123683E
487 #endif
488
489 #ifndef CGROUP_SUPER_MAGIC
490 #define CGROUP_SUPER_MAGIC 0x27e0eb
491 #endif
492
493 #ifndef CGROUP2_SUPER_MAGIC
494 #define CGROUP2_SUPER_MAGIC 0x63677270
495 #endif
496
497 #ifndef CLONE_NEWCGROUP
498 #define CLONE_NEWCGROUP 0x02000000
499 #endif
500
501 #ifndef TMPFS_MAGIC
502 #define TMPFS_MAGIC 0x01021994
503 #endif
504
505 #ifndef MQUEUE_MAGIC
506 #define MQUEUE_MAGIC 0x19800202
507 #endif
508
509 #ifndef SECURITYFS_MAGIC
510 #define SECURITYFS_MAGIC 0x73636673
511 #endif
512
513 #ifndef TRACEFS_MAGIC
514 #define TRACEFS_MAGIC 0x74726163
515 #endif
516
517 #ifndef BPF_FS_MAGIC
518 #define BPF_FS_MAGIC 0xcafe4a11
519 #endif
520
521 #ifndef OCFS2_SUPER_MAGIC
522 #define OCFS2_SUPER_MAGIC 0x7461636f
523 #endif
524
525 #ifndef MS_MOVE
526 #define MS_MOVE 8192
527 #endif
528
529 #ifndef MS_REC
530 #define MS_REC 16384
531 #endif
532
533 #ifndef MS_PRIVATE
534 #define MS_PRIVATE (1<<18)
535 #endif
536
537 #ifndef MS_REC
538 #define MS_REC (1<<19)
539 #endif
540
541 #ifndef MS_SHARED
542 #define MS_SHARED (1<<20)
543 #endif
544
545 #ifndef MS_RELATIME
546 #define MS_RELATIME (1<<21)
547 #endif
548
549 #ifndef MS_KERNMOUNT
550 #define MS_KERNMOUNT (1<<22)
551 #endif
552
553 #ifndef MS_I_VERSION
554 #define MS_I_VERSION (1<<23)
555 #endif
556
557 #ifndef MS_STRICTATIME
558 #define MS_STRICTATIME (1<<24)
559 #endif
560
561 #ifndef MS_LAZYTIME
562 #define MS_LAZYTIME (1<<25)
563 #endif
564
565 #ifndef SCM_SECURITY
566 #define SCM_SECURITY 0x03
567 #endif
568
569 #ifndef PR_SET_NO_NEW_PRIVS
570 #define PR_SET_NO_NEW_PRIVS 38
571 #endif
572
573 #ifndef PR_SET_CHILD_SUBREAPER
574 #define PR_SET_CHILD_SUBREAPER 36
575 #endif
576
577 #ifndef PR_SET_MM_ARG_START
578 #define PR_SET_MM_ARG_START 8
579 #endif
580
581 #ifndef PR_SET_MM_ARG_END
582 #define PR_SET_MM_ARG_END 9
583 #endif
584
585 #ifndef PR_SET_MM_ENV_START
586 #define PR_SET_MM_ENV_START 10
587 #endif
588
589 #ifndef PR_SET_MM_ENV_END
590 #define PR_SET_MM_ENV_END 11
591 #endif
592
593 #ifndef EFIVARFS_MAGIC
594 #define EFIVARFS_MAGIC 0xde5e81e4
595 #endif
596
597 #ifndef SMACK_MAGIC
598 #define SMACK_MAGIC 0x43415d53
599 #endif
600
601 #ifndef DM_DEFERRED_REMOVE
602 #define DM_DEFERRED_REMOVE (1 << 17)
603 #endif
604
605 #ifndef MAX_HANDLE_SZ
606 #define MAX_HANDLE_SZ 128
607 #endif
608
609 #if ! HAVE_SECURE_GETENV
610 # if HAVE___SECURE_GETENV
611 # define secure_getenv __secure_getenv
612 # else
613 # error "neither secure_getenv nor __secure_getenv are available"
614 # endif
615 #endif
616
617 #ifndef CIFS_MAGIC_NUMBER
618 # define CIFS_MAGIC_NUMBER 0xFF534D42
619 #endif
620
621 #ifndef TFD_TIMER_CANCEL_ON_SET
622 # define TFD_TIMER_CANCEL_ON_SET (1 << 1)
623 #endif
624
625 #ifndef SO_REUSEPORT
626 # define SO_REUSEPORT 15
627 #endif
628
629 #ifndef SO_PEERGROUPS
630 # define SO_PEERGROUPS 59
631 #endif
632
633 #ifndef EVIOCREVOKE
634 # define EVIOCREVOKE _IOW('E', 0x91, int)
635 #endif
636
637 #ifndef EVIOCSMASK
638
639 struct input_mask {
640 uint32_t type;
641 uint32_t codes_size;
642 uint64_t codes_ptr;
643 };
644
645 #define EVIOCSMASK _IOW('E', 0x93, struct input_mask)
646 #endif
647
648 #ifndef DRM_IOCTL_SET_MASTER
649 # define DRM_IOCTL_SET_MASTER _IO('d', 0x1e)
650 #endif
651
652 #ifndef DRM_IOCTL_DROP_MASTER
653 # define DRM_IOCTL_DROP_MASTER _IO('d', 0x1f)
654 #endif
655
656 /* The precise definition of __O_TMPFILE is arch specific; use the
657 * values defined by the kernel (note: some are hexa, some are octal,
658 * duplicated as-is from the kernel definitions):
659 * - alpha, parisc, sparc: each has a specific value;
660 * - others: they use the "generic" value.
661 */
662
663 #ifndef __O_TMPFILE
664 #if defined(__alpha__)
665 #define __O_TMPFILE 0100000000
666 #elif defined(__parisc__) || defined(__hppa__)
667 #define __O_TMPFILE 0400000000
668 #elif defined(__sparc__) || defined(__sparc64__)
669 #define __O_TMPFILE 0x2000000
670 #else
671 #define __O_TMPFILE 020000000
672 #endif
673 #endif
674
675 /* a horrid kludge trying to make sure that this will fail on old kernels */
676 #ifndef O_TMPFILE
677 #define O_TMPFILE (__O_TMPFILE | O_DIRECTORY)
678 #endif
679
680 #if !HAVE_LO_FLAGS_PARTSCAN
681 #define LO_FLAGS_PARTSCAN 8
682 #endif
683
684 #ifndef LOOP_CTL_REMOVE
685 #define LOOP_CTL_REMOVE 0x4C81
686 #endif
687
688 #ifndef LOOP_CTL_GET_FREE
689 #define LOOP_CTL_GET_FREE 0x4C82
690 #endif
691
692 #if !HAVE_IFLA_INET6_ADDR_GEN_MODE
693 #define IFLA_INET6_UNSPEC 0
694 #define IFLA_INET6_FLAGS 1
695 #define IFLA_INET6_CONF 2
696 #define IFLA_INET6_STATS 3
697 #define IFLA_INET6_MCAST 4
698 #define IFLA_INET6_CACHEINFO 5
699 #define IFLA_INET6_ICMP6STATS 6
700 #define IFLA_INET6_TOKEN 7
701 #define IFLA_INET6_ADDR_GEN_MODE 8
702 #define __IFLA_INET6_MAX 9
703
704 #define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1)
705
706 #define IN6_ADDR_GEN_MODE_EUI64 0
707 #define IN6_ADDR_GEN_MODE_NONE 1
708 #endif
709
710 #if !HAVE_IN6_ADDR_GEN_MODE_STABLE_PRIVACY
711 #define IN6_ADDR_GEN_MODE_STABLE_PRIVACY 2
712 #endif
713
714 #if !HAVE_IFLA_MACVLAN_FLAGS
715 #define IFLA_MACVLAN_UNSPEC 0
716 #define IFLA_MACVLAN_MODE 1
717 #define IFLA_MACVLAN_FLAGS 2
718 #define __IFLA_MACVLAN_MAX 3
719
720 #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
721 #endif
722
723 #if !HAVE_IFLA_IPVLAN_FLAGS
724 #define IFLA_IPVLAN_UNSPEC 0
725 #define IFLA_IPVLAN_MODE 1
726 #define IFLA_IPVLAN_FLAGS 2
727 #define __IFLA_IPVLAN_MAX 3
728
729 #define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
730
731 #define IPVLAN_MODE_L2 0
732 #define IPVLAN_MODE_L3 1
733 #define IPVLAN_MODE_L3S 2
734 #define IPVLAN_MAX 2
735 #endif
736
737 #if !HAVE_IPVLAN_F_PRIVATE
738 #define IPVLAN_F_PRIVATE 0x01
739 #define IPVLAN_F_VEPA 0x02
740 #define __IPVLAN_F_PRIVATE_MAX 3
741
742 #define HAVE_IPVLAN_F_PRIVATE_MAX (__HAVE_IPVLAN_F_PRIVATE_MAX - 1)
743 #endif
744
745 #if !HAVE_IFLA_VTI_REMOTE
746 #define IFLA_VTI_UNSPEC 0
747 #define IFLA_VTI_LINK 1
748 #define IFLA_VTI_IKEY 2
749 #define IFLA_VTI_OKEY 3
750 #define IFLA_VTI_LOCAL 4
751 #define IFLA_VTI_REMOTE 5
752 #define __IFLA_VTI_MAX 6
753
754 #define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1)
755 #endif
756
757 #if !HAVE_IFLA_PHYS_PORT_ID
758 #define IFLA_EXT_MASK 29
759 #undef IFLA_PROMISCUITY
760 #define IFLA_PROMISCUITY 30
761 #define IFLA_NUM_TX_QUEUES 31
762 #define IFLA_NUM_RX_QUEUES 32
763 #define IFLA_CARRIER 33
764 #define IFLA_PHYS_PORT_ID 34
765 #define __IFLA_MAX 35
766
767 #define IFLA_MAX (__IFLA_MAX - 1)
768 #endif
769
770 #if !HAVE_IFLA_BOND_AD_INFO
771 #define IFLA_BOND_UNSPEC 0
772 #define IFLA_BOND_MODE 1
773 #define IFLA_BOND_ACTIVE_SLAVE 2
774 #define IFLA_BOND_MIIMON 3
775 #define IFLA_BOND_UPDELAY 4
776 #define IFLA_BOND_DOWNDELAY 5
777 #define IFLA_BOND_USE_CARRIER 6
778 #define IFLA_BOND_ARP_INTERVAL 7
779 #define IFLA_BOND_ARP_IP_TARGET 8
780 #define IFLA_BOND_ARP_VALIDATE 9
781 #define IFLA_BOND_ARP_ALL_TARGETS 10
782 #define IFLA_BOND_PRIMARY 11
783 #define IFLA_BOND_PRIMARY_RESELECT 12
784 #define IFLA_BOND_FAIL_OVER_MAC 13
785 #define IFLA_BOND_XMIT_HASH_POLICY 14
786 #define IFLA_BOND_RESEND_IGMP 15
787 #define IFLA_BOND_NUM_PEER_NOTIF 16
788 #define IFLA_BOND_ALL_SLAVES_ACTIVE 17
789 #define IFLA_BOND_MIN_LINKS 18
790 #define IFLA_BOND_LP_INTERVAL 19
791 #define IFLA_BOND_PACKETS_PER_SLAVE 20
792 #define IFLA_BOND_AD_LACP_RATE 21
793 #define IFLA_BOND_AD_SELECT 22
794 #define IFLA_BOND_AD_INFO 23
795 #define __IFLA_BOND_MAX 24
796
797 #define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1)
798 #endif
799
800 #if !HAVE_IFLA_VLAN_PROTOCOL
801 #define IFLA_VLAN_UNSPEC 0
802 #define IFLA_VLAN_ID 1
803 #define IFLA_VLAN_FLAGS 2
804 #define IFLA_VLAN_EGRESS_QOS 3
805 #define IFLA_VLAN_INGRESS_QOS 4
806 #define IFLA_VLAN_PROTOCOL 5
807 #define __IFLA_VLAN_MAX 6
808
809 #define IFLA_VLAN_MAX (__IFLA_VLAN_MAX - 1)
810 #endif
811
812 #if !HAVE_IFLA_VXLAN_GPE
813 #define IFLA_VXLAN_UNSPEC 0
814 #define IFLA_VXLAN_ID 1
815 #define IFLA_VXLAN_GROUP 2
816 #define IFLA_VXLAN_LINK 3
817 #define IFLA_VXLAN_LOCAL 4
818 #define IFLA_VXLAN_TTL 5
819 #define IFLA_VXLAN_TOS 6
820 #define IFLA_VXLAN_LEARNING 7
821 #define IFLA_VXLAN_AGEING 8
822 #define IFLA_VXLAN_LIMIT 9
823 #define IFLA_VXLAN_PORT_RANGE 10
824 #define IFLA_VXLAN_PROXY 11
825 #define IFLA_VXLAN_RSC 12
826 #define IFLA_VXLAN_L2MISS 13
827 #define IFLA_VXLAN_L3MISS 14
828 #define IFLA_VXLAN_PORT 15
829 #define IFLA_VXLAN_GROUP6 16
830 #define IFLA_VXLAN_LOCAL6 17
831 #define IFLA_VXLAN_UDP_CSUM 18
832 #define IFLA_VXLAN_UDP_ZERO_CSUM6_TX 19
833 #define IFLA_VXLAN_UDP_ZERO_CSUM6_RX 20
834 #define IFLA_VXLAN_REMCSUM_TX 21
835 #define IFLA_VXLAN_REMCSUM_RX 22
836 #define IFLA_VXLAN_GBP 23
837 #define IFLA_VXLAN_REMCSUM_NOPARTIAL 24
838 #define IFLA_VXLAN_COLLECT_METADATA 25
839 #define IFLA_VXLAN_LABEL 26
840 #define IFLA_VXLAN_GPE 27
841
842 #define __IFLA_VXLAN_MAX 28
843
844 #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
845 #endif
846
847 #if !HAVE_IFLA_GENEVE_LABEL
848 #define IFLA_GENEVE_UNSPEC 0
849 #define IFLA_GENEVE_ID 1
850 #define IFLA_GENEVE_REMOTE 2
851 #define IFLA_GENEVE_TTL 3
852 #define IFLA_GENEVE_TOS 4
853 #define IFLA_GENEVE_PORT 5
854 #define IFLA_GENEVE_COLLECT_METADATA 6
855 #define IFLA_GENEVE_REMOTE6 7
856 #define IFLA_GENEVE_UDP_CSUM 8
857 #define IFLA_GENEVE_UDP_ZERO_CSUM6_TX 9
858 #define IFLA_GENEVE_UDP_ZERO_CSUM6_RX 10
859 #define IFLA_GENEVE_LABEL 11
860
861 #define __IFLA_GENEVE_MAX 12
862
863 #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
864 #endif
865
866 #if !HAVE_IFLA_IPTUN_ENCAP_DPORT
867 #define IFLA_IPTUN_UNSPEC 0
868 #define IFLA_IPTUN_LINK 1
869 #define IFLA_IPTUN_LOCAL 2
870 #define IFLA_IPTUN_REMOTE 3
871 #define IFLA_IPTUN_TTL 4
872 #define IFLA_IPTUN_TOS 5
873 #define IFLA_IPTUN_ENCAP_LIMIT 6
874 #define IFLA_IPTUN_FLOWINFO 7
875 #define IFLA_IPTUN_FLAGS 8
876 #define IFLA_IPTUN_PROTO 9
877 #define IFLA_IPTUN_PMTUDISC 10
878 #define IFLA_IPTUN_6RD_PREFIX 11
879 #define IFLA_IPTUN_6RD_RELAY_PREFIX 12
880 #define IFLA_IPTUN_6RD_PREFIXLEN 13
881 #define IFLA_IPTUN_6RD_RELAY_PREFIXLEN 14
882 #define IFLA_IPTUN_ENCAP_TYPE 15
883 #define IFLA_IPTUN_ENCAP_FLAGS 16
884 #define IFLA_IPTUN_ENCAP_SPORT 17
885 #define IFLA_IPTUN_ENCAP_DPORT 18
886
887 #define __IFLA_IPTUN_MAX 19
888
889 #define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1)
890 #endif
891
892 #if !HAVE_IFLA_GRE_ENCAP_DPORT
893 #define IFLA_GRE_UNSPEC 0
894 #define IFLA_GRE_LINK 1
895 #define IFLA_GRE_IFLAGS 2
896 #define IFLA_GRE_OFLAGS 3
897 #define IFLA_GRE_IKEY 4
898 #define IFLA_GRE_OKEY 5
899 #define IFLA_GRE_LOCAL 6
900 #define IFLA_GRE_REMOTE 7
901 #define IFLA_GRE_TTL 8
902 #define IFLA_GRE_TOS 9
903 #define IFLA_GRE_PMTUDISC 10
904 #define IFLA_GRE_ENCAP_LIMIT 11
905 #define IFLA_GRE_FLOWINFO 12
906 #define IFLA_GRE_FLAGS 13
907 #define IFLA_GRE_ENCAP_TYPE 14
908 #define IFLA_GRE_ENCAP_FLAGS 15
909 #define IFLA_GRE_ENCAP_SPORT 16
910 #define IFLA_GRE_ENCAP_DPORT 17
911
912 #define __IFLA_GRE_MAX 18
913
914 #define IFLA_GRE_MAX (__IFLA_GRE_MAX - 1)
915 #endif
916
917 #if !HAVE_IFLA_BRIDGE_VLAN_INFO
918 #define IFLA_BRIDGE_FLAGS 0
919 #define IFLA_BRIDGE_MODE 1
920 #define IFLA_BRIDGE_VLAN_INFO 2
921 #define __IFLA_BRIDGE_MAX 3
922
923 #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
924 #endif
925
926 #ifndef BRIDGE_VLAN_INFO_RANGE_BEGIN
927 #define BRIDGE_VLAN_INFO_RANGE_BEGIN (1<<3) /* VLAN is start of vlan range */
928 #endif
929
930 #ifndef BRIDGE_VLAN_INFO_RANGE_END
931 #define BRIDGE_VLAN_INFO_RANGE_END (1<<4) /* VLAN is end of vlan range */
932 #endif
933
934 #if !HAVE_IFLA_BR_VLAN_DEFAULT_PVID
935 #define IFLA_BR_UNSPEC 0
936 #define IFLA_BR_FORWARD_DELAY 1
937 #define IFLA_BR_HELLO_TIME 2
938 #define IFLA_BR_MAX_AGE 3
939 #define IFLA_BR_AGEING_TIME 4
940 #define IFLA_BR_STP_STATE 5
941 #define IFLA_BR_PRIORITY 6
942 #define IFLA_BR_VLAN_FILTERING 7
943 #define IFLA_BR_VLAN_PROTOCOL 8
944 #define IFLA_BR_GROUP_FWD_MASK 9
945 #define IFLA_BR_ROOT_ID 10
946 #define IFLA_BR_BRIDGE_ID 11
947 #define IFLA_BR_ROOT_PORT 12
948 #define IFLA_BR_ROOT_PATH_COST 13
949 #define IFLA_BR_TOPOLOGY_CHANGE 14
950 #define IFLA_BR_TOPOLOGY_CHANGE_DETECTED 15
951 #define IFLA_BR_HELLO_TIMER 16
952 #define IFLA_BR_TCN_TIMER 17
953 #define IFLA_BR_TOPOLOGY_CHANGE_TIMER 18
954 #define IFLA_BR_GC_TIMER 19
955 #define IFLA_BR_GROUP_ADDR 20
956 #define IFLA_BR_FDB_FLUSH 21
957 #define IFLA_BR_MCAST_ROUTER 22
958 #define IFLA_BR_MCAST_SNOOPING 23
959 #define IFLA_BR_MCAST_QUERY_USE_IFADDR 24
960 #define IFLA_BR_MCAST_QUERIER 25
961 #define IFLA_BR_MCAST_HASH_ELASTICITY 26
962 #define IFLA_BR_MCAST_HASH_MAX 27
963 #define IFLA_BR_MCAST_LAST_MEMBER_CNT 28
964 #define IFLA_BR_MCAST_STARTUP_QUERY_CNT 29
965 #define IFLA_BR_MCAST_LAST_MEMBER_INTVL 30
966 #define IFLA_BR_MCAST_MEMBERSHIP_INTVL 31
967 #define IFLA_BR_MCAST_QUERIER_INTVL 32
968 #define IFLA_BR_MCAST_QUERY_INTVL 33
969 #define IFLA_BR_MCAST_QUERY_RESPONSE_INTVL 34
970 #define IFLA_BR_MCAST_STARTUP_QUERY_INTVL 35
971 #define IFLA_BR_NF_CALL_IPTABLES 36
972 #define IFLA_BR_NF_CALL_IP6TABLES 37
973 #define IFLA_BR_NF_CALL_ARPTABLES 38
974 #define IFLA_BR_VLAN_DEFAULT_PVID 39
975 #define __IFLA_BR_MAX 40
976
977 #define IFLA_BR_MAX (__IFLA_BR_MAX - 1)
978 #endif
979
980 #if !HAVE_IFLA_BRPORT_LEARNING_SYNC
981 #define IFLA_BRPORT_UNSPEC 0
982 #define IFLA_BRPORT_STATE 1
983 #define IFLA_BRPORT_PRIORITY 2
984 #define IFLA_BRPORT_COST 3
985 #define IFLA_BRPORT_MODE 4
986 #define IFLA_BRPORT_GUARD 5
987 #define IFLA_BRPORT_PROTECT 6
988 #define IFLA_BRPORT_FAST_LEAVE 7
989 #define IFLA_BRPORT_LEARNING 8
990 #define IFLA_BRPORT_UNICAST_FLOOD 9
991 #define IFLA_BRPORT_LEARNING_SYNC 11
992 #define __IFLA_BRPORT_MAX 12
993
994 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
995 #endif
996
997 #if !HAVE_FRA_UID_RANGE
998 #define FRA_UNSPEC 0
999 #define FRA_DST 1
1000 #define FRA_SRC 2
1001 #define FRA_IIFNAME 3
1002 #define FRA_GOTO 4
1003 #define FRA_UNUSED2 5
1004 #define FRA_PRIORITY 6
1005 #define FRA_UNUSED3 7
1006 #define FRA_UNUSED4 8
1007 #define FRA_UNUSED5 9
1008 #define FRA_FWMARK 10
1009 #define FRA_FLOW 11
1010 #define FRA_TUN_ID 12
1011 #define FRA_SUPPRESS_IFGROUP 13
1012 #define FRA_SUPPRESS_PREFIXLEN 14
1013 #define FRA_TABLE 15
1014 #define FRA_FWMASK 16
1015 #define FRA_OIFNAME 17
1016 #define FRA_PAD 18
1017 #define FRA_L3MDEV 19
1018 #define FRA_UID_RANGE 20
1019 #define __FRA_MAX 12
1020
1021 #define FRA_MAX (__FRA_MAX - 1)
1022 #endif
1023
1024 #if !HAVE_IFLA_BRPORT_PROXYARP
1025 #define IFLA_BRPORT_PROXYARP 10
1026 #endif
1027
1028 #if !HAVE_IFLA_VRF_TABLE
1029 #define IFLA_VRF_TABLE 1
1030 #endif
1031
1032 #if !HAVE_VXCAN_INFO_PEER
1033 #define VXCAN_INFO_PEER 1
1034 #endif
1035
1036 #if !HAVE_NDA_IFINDEX
1037 #define NDA_UNSPEC 0
1038 #define NDA_DST 1
1039 #define NDA_LLADDR 2
1040 #define NDA_CACHEINFO 3
1041 #define NDA_PROBES 4
1042 #define NDA_VLAN 5
1043 #define NDA_PORT 6
1044 #define NDA_VNI 7
1045 #define NDA_IFINDEX 8
1046 #define __NDA_MAX 9
1047
1048 #define NDA_MAX (__NDA_MAX - 1)
1049 #endif
1050
1051 #ifndef RTA_PREF
1052 #define RTA_PREF 20
1053 #endif
1054
1055 #ifndef RTAX_QUICKACK
1056 #define RTAX_QUICKACK 15
1057 #endif
1058
1059 #ifndef IPV6_UNICAST_IF
1060 #define IPV6_UNICAST_IF 76
1061 #endif
1062
1063 #ifndef IPV6_MIN_MTU
1064 #define IPV6_MIN_MTU 1280
1065 #endif
1066
1067 #ifndef IFF_MULTI_QUEUE
1068 #define IFF_MULTI_QUEUE 0x100
1069 #endif
1070
1071 #ifndef IFF_LOWER_UP
1072 #define IFF_LOWER_UP 0x10000
1073 #endif
1074
1075 #ifndef IFF_DORMANT
1076 #define IFF_DORMANT 0x20000
1077 #endif
1078
1079 #ifndef BOND_XMIT_POLICY_ENCAP23
1080 #define BOND_XMIT_POLICY_ENCAP23 3
1081 #endif
1082
1083 #ifndef BOND_XMIT_POLICY_ENCAP34
1084 #define BOND_XMIT_POLICY_ENCAP34 4
1085 #endif
1086
1087 #ifndef NET_ADDR_RANDOM
1088 # define NET_ADDR_RANDOM 1
1089 #endif
1090
1091 #ifndef NET_NAME_UNKNOWN
1092 # define NET_NAME_UNKNOWN 0
1093 #endif
1094
1095 #ifndef NET_NAME_ENUM
1096 # define NET_NAME_ENUM 1
1097 #endif
1098
1099 #ifndef NET_NAME_PREDICTABLE
1100 # define NET_NAME_PREDICTABLE 2
1101 #endif
1102
1103 #ifndef NET_NAME_USER
1104 # define NET_NAME_USER 3
1105 #endif
1106
1107 #ifndef NET_NAME_RENAMED
1108 # define NET_NAME_RENAMED 4
1109 #endif
1110
1111 #ifndef BPF_XOR
1112 # define BPF_XOR 0xa0
1113 #endif
1114
1115 /* Note that LOOPBACK_IFINDEX is currently not exported by the
1116 * kernel/glibc, but hardcoded internally by the kernel. However, as
1117 * it is exported to userspace indirectly via rtnetlink and the
1118 * ioctls, and made use of widely we define it here too, in a way that
1119 * is compatible with the kernel's internal definition. */
1120 #ifndef LOOPBACK_IFINDEX
1121 #define LOOPBACK_IFINDEX 1
1122 #endif
1123
1124 #if !HAVE_IFA_FLAGS
1125 #define IFA_FLAGS 8
1126 #endif
1127
1128 #ifndef IFA_F_MANAGETEMPADDR
1129 #define IFA_F_MANAGETEMPADDR 0x100
1130 #endif
1131
1132 #ifndef IFA_F_NOPREFIXROUTE
1133 #define IFA_F_NOPREFIXROUTE 0x200
1134 #endif
1135
1136 #ifndef MAX_AUDIT_MESSAGE_LENGTH
1137 #define MAX_AUDIT_MESSAGE_LENGTH 8970
1138 #endif
1139
1140 #ifndef AUDIT_NLGRP_MAX
1141 #define AUDIT_NLGRP_READLOG 1
1142 #endif
1143
1144 #ifndef CAP_MAC_OVERRIDE
1145 #define CAP_MAC_OVERRIDE 32
1146 #endif
1147
1148 #ifndef CAP_MAC_ADMIN
1149 #define CAP_MAC_ADMIN 33
1150 #endif
1151
1152 #ifndef CAP_SYSLOG
1153 #define CAP_SYSLOG 34
1154 #endif
1155
1156 #ifndef CAP_WAKE_ALARM
1157 #define CAP_WAKE_ALARM 35
1158 #endif
1159
1160 #ifndef CAP_BLOCK_SUSPEND
1161 #define CAP_BLOCK_SUSPEND 36
1162 #endif
1163
1164 #ifndef CAP_AUDIT_READ
1165 #define CAP_AUDIT_READ 37
1166 #endif
1167
1168 #ifndef RENAME_NOREPLACE
1169 #define RENAME_NOREPLACE (1 << 0)
1170 #endif
1171
1172 #ifndef KCMP_FILE
1173 #define KCMP_FILE 0
1174 #endif
1175
1176 #ifndef INPUT_PROP_POINTING_STICK
1177 #define INPUT_PROP_POINTING_STICK 0x05
1178 #endif
1179
1180 #ifndef INPUT_PROP_ACCELEROMETER
1181 #define INPUT_PROP_ACCELEROMETER 0x06
1182 #endif
1183
1184 #ifndef BTN_DPAD_UP
1185 #define BTN_DPAD_UP 0x220
1186 #define BTN_DPAD_RIGHT 0x223
1187 #endif
1188
1189 #ifndef KEY_ALS_TOGGLE
1190 #define KEY_ALS_TOGGLE 0x230
1191 #endif
1192
1193 #if ! HAVE_KEY_SERIAL_T
1194 typedef int32_t key_serial_t;
1195 #endif
1196
1197 #ifndef KEYCTL_JOIN_SESSION_KEYRING
1198 #define KEYCTL_JOIN_SESSION_KEYRING 1
1199 #endif
1200
1201 #ifndef KEYCTL_CHOWN
1202 #define KEYCTL_CHOWN 4
1203 #endif
1204
1205 #ifndef KEYCTL_SETPERM
1206 #define KEYCTL_SETPERM 5
1207 #endif
1208
1209 #ifndef KEYCTL_DESCRIBE
1210 #define KEYCTL_DESCRIBE 6
1211 #endif
1212
1213 #ifndef KEYCTL_LINK
1214 #define KEYCTL_LINK 8
1215 #endif
1216
1217 #ifndef KEYCTL_READ
1218 #define KEYCTL_READ 11
1219 #endif
1220
1221 #ifndef KEYCTL_SET_TIMEOUT
1222 #define KEYCTL_SET_TIMEOUT 15
1223 #endif
1224
1225 #ifndef KEY_POS_VIEW
1226 #define KEY_POS_VIEW 0x01000000
1227 #define KEY_POS_READ 0x02000000
1228 #define KEY_POS_WRITE 0x04000000
1229 #define KEY_POS_SEARCH 0x08000000
1230 #define KEY_POS_LINK 0x10000000
1231 #define KEY_POS_SETATTR 0x20000000
1232
1233 #define KEY_USR_VIEW 0x00010000
1234 #define KEY_USR_READ 0x00020000
1235 #define KEY_USR_WRITE 0x00040000
1236 #define KEY_USR_SEARCH 0x00080000
1237 #define KEY_USR_LINK 0x00100000
1238 #define KEY_USR_SETATTR 0x00200000
1239
1240 #define KEY_GRP_VIEW 0x00000100
1241 #define KEY_GRP_READ 0x00000200
1242 #define KEY_GRP_WRITE 0x00000400
1243 #define KEY_GRP_SEARCH 0x00000800
1244 #define KEY_GRP_LINK 0x00001000
1245 #define KEY_GRP_SETATTR 0x00002000
1246
1247 #define KEY_OTH_VIEW 0x00000001
1248 #define KEY_OTH_READ 0x00000002
1249 #define KEY_OTH_WRITE 0x00000004
1250 #define KEY_OTH_SEARCH 0x00000008
1251 #define KEY_OTH_LINK 0x00000010
1252 #define KEY_OTH_SETATTR 0x00000020
1253 #endif
1254
1255 #ifndef KEY_SPEC_USER_KEYRING
1256 #define KEY_SPEC_USER_KEYRING -4
1257 #endif
1258
1259 #ifndef KEY_SPEC_SESSION_KEYRING
1260 #define KEY_SPEC_SESSION_KEYRING -3
1261 #endif
1262
1263 #ifndef PR_CAP_AMBIENT
1264 #define PR_CAP_AMBIENT 47
1265 #endif
1266
1267 #ifndef PR_CAP_AMBIENT_IS_SET
1268 #define PR_CAP_AMBIENT_IS_SET 1
1269 #endif
1270
1271 #ifndef PR_CAP_AMBIENT_RAISE
1272 #define PR_CAP_AMBIENT_RAISE 2
1273 #endif
1274
1275 #ifndef PR_CAP_AMBIENT_CLEAR_ALL
1276 #define PR_CAP_AMBIENT_CLEAR_ALL 4
1277 #endif
1278
1279 /* The following two defines are actually available in the kernel headers for longer, but we define them here anyway,
1280 * since that makes it easier to use them in conjunction with the glibc net/if.h header which conflicts with
1281 * linux/if.h. */
1282 #ifndef IF_OPER_UNKNOWN
1283 #define IF_OPER_UNKNOWN 0
1284 #endif
1285
1286 #ifndef IF_OPER_UP
1287 #define IF_OPER_UP 6
1288
1289 #if ! HAVE_CHAR32_T
1290 #define char32_t uint32_t
1291 #endif
1292
1293 #if ! HAVE_CHAR16_T
1294 #define char16_t uint16_t
1295 #endif
1296
1297 #ifndef ETHERTYPE_LLDP
1298 #define ETHERTYPE_LLDP 0x88cc
1299 #endif
1300
1301 #ifndef IFA_F_MCAUTOJOIN
1302 #define IFA_F_MCAUTOJOIN 0x400
1303 #endif
1304
1305 #if ! HAVE_STRUCT_ETHTOOL_LINK_SETTINGS
1306
1307 #define ETHTOOL_GLINKSETTINGS 0x0000004c /* Get ethtool_link_settings */
1308 #define ETHTOOL_SLINKSETTINGS 0x0000004d /* Set ethtool_link_settings */
1309
1310 struct ethtool_link_settings {
1311 __u32 cmd;
1312 __u32 speed;
1313 __u8 duplex;
1314 __u8 port;
1315 __u8 phy_address;
1316 __u8 autoneg;
1317 __u8 mdio_support;
1318 __u8 eth_tp_mdix;
1319 __u8 eth_tp_mdix_ctrl;
1320 __s8 link_mode_masks_nwords;
1321 __u32 reserved[8];
1322 __u32 link_mode_masks[0];
1323 /* layout of link_mode_masks fields:
1324 * __u32 map_supported[link_mode_masks_nwords];
1325 * __u32 map_advertising[link_mode_masks_nwords];
1326 * __u32 map_lp_advertising[link_mode_masks_nwords];
1327 */
1328 };
1329
1330 #endif
1331
1332 #if ! HAVE_STRUCT_FIB_RULE_UID_RANGE
1333
1334 struct fib_rule_uid_range {
1335 __u32 start;
1336 __u32 end;
1337 };
1338
1339 #endif
1340
1341 #endif
1342
1343 #ifndef SOL_ALG
1344 #define SOL_ALG 279
1345 #endif
1346
1347 #ifndef AF_VSOCK
1348 #define AF_VSOCK 40
1349 #endif
1350
1351 #ifndef EXT4_IOC_RESIZE_FS
1352 # define EXT4_IOC_RESIZE_FS _IOW('f', 16, __u64)
1353 #endif
1354
1355 #ifndef NSFS_MAGIC
1356 #define NSFS_MAGIC 0x6e736673
1357 #endif
1358
1359 #ifndef NS_GET_NSTYPE
1360 #define NS_GET_NSTYPE _IO(0xb7, 0x3)
1361 #endif
1362
1363 #ifndef FALLOC_FL_KEEP_SIZE
1364 #define FALLOC_FL_KEEP_SIZE 0x01
1365 #endif
1366
1367 #ifndef FALLOC_FL_PUNCH_HOLE
1368 #define FALLOC_FL_PUNCH_HOLE 0x02
1369 #endif
1370
1371 #ifndef PF_KTHREAD
1372 #define PF_KTHREAD 0x00200000
1373 #endif
1374
1375 #include "missing_syscall.h"