/* harkaq-uapi.h — las constantes del ABI de Landlock/audit, con respaldo propio. * * Por qué existe: **el kernel y los headers envejecen por separado**. El worker de la granja * corre kernel 6.17 (Landlock ABI 7, con audit de denegaciones) pero su `linux-libc-dev` es * 6.8 y no define NADA de lo que hace falta — ni los flags de log de ABI 7/8, ni * `AUDIT_LANDLOCK_ACCESS`, ni `IOCTL_DEV` de ABI 5. El kernel puede; el compilador no sabe * pedírselo. Medido en Ubuntu 24.04 + HWE 6.17 (SDD 16 §4.8). * * Es el mismo error de fondo que §3.1 advierte al revés: allá, deducir el ABI de la versión del * kernel; acá, deducirlo de la versión de los headers. **Ninguna de las dos dice la verdad.** La * única fuente es el syscall en runtime (`LANDLOCK_CREATE_RULESET_VERSION`), y estas constantes * son números de contrato del kernel — estables por definición de UAPI, seguros de fijar. * * Sin esto, harkaq sólo compila en distros con headers al día, que es justo lo que un * compilador continuo NO puede exigir. */ #ifndef HARKAQ_UAPI_H #define HARKAQ_UAPI_H #include #include /* ABI 1 */ #ifndef LANDLOCK_CREATE_RULESET_VERSION #define LANDLOCK_CREATE_RULESET_VERSION (1U << 0) #endif /* ABI 2 — sin REFER no compila software real (D7) */ #ifndef LANDLOCK_ACCESS_FS_REFER #define LANDLOCK_ACCESS_FS_REFER (1ULL << 13) #endif /* ABI 3 */ #ifndef LANDLOCK_ACCESS_FS_TRUNCATE #define LANDLOCK_ACCESS_FS_TRUNCATE (1ULL << 14) #endif /* ABI 5 */ #ifndef LANDLOCK_ACCESS_FS_IOCTL_DEV #define LANDLOCK_ACCESS_FS_IOCTL_DEV (1ULL << 15) #endif /* ABI 6 — scoping de IPC (D8) */ #ifndef LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET #define LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET (1ULL << 0) #endif #ifndef LANDLOCK_SCOPE_SIGNAL #define LANDLOCK_SCOPE_SIGNAL (1ULL << 1) #endif /* ABI 7 — los flags de logging. LOG_NEW_EXEC_ON es del que cuelga TODO el proyecto: sin él el * kernel no audita ninguna denegación posterior al execve y harkaq certificaría como herméticos * todos los builds, sin un solo error visible (§3.4). */ #ifndef LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF #define LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF (1U << 0) #endif #ifndef LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON #define LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON (1U << 1) #endif #ifndef LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF #define LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF (1U << 2) #endif /* ABI 8 */ #ifndef LANDLOCK_RESTRICT_SELF_TSYNC #define LANDLOCK_RESTRICT_SELF_TSYNC (1U << 3) #endif /* Tipos de registro de audit. Sin éstos el lector no reconoce la evidencia AUNQUE el kernel la * emita: filtraría por un número que no conoce y vería cero denegaciones — el falso `Hermetico` * de D9, esta vez por headers viejos. */ #ifndef AUDIT_LANDLOCK_ACCESS #define AUDIT_LANDLOCK_ACCESS 1423 #endif #ifndef AUDIT_LANDLOCK_DOMAIN #define AUDIT_LANDLOCK_DOMAIN 1424 #endif /* Grupo multicast de sólo-lectura del audit (requiere CAP_AUDIT_READ). */ #ifndef AUDIT_NLGRP_READLOG #define AUDIT_NLGRP_READLOG 1 #endif #endif /* HARKAQ_UAPI_H */