return AUDITSC_OPENAT;
        case __NR_execve:
                return AUDITSC_EXECVE;
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
        default:
                return AUDITSC_NATIVE;
        }
 
                return AUDITSC_OPENAT;
        case __NR_execve:
                return AUDITSC_EXECVE;
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
        default:
                return AUDITSC_NATIVE;
        }
 
                return AUDITSC_OPENAT;
        case __NR_execve:
                return AUDITSC_EXECVE;
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
        default:
                return AUDITSC_NATIVE;
        }
 
                return AUDITSC_OPENAT;
        case __NR_execve:
                return AUDITSC_EXECVE;
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
        default:
                return AUDITSC_COMPAT;
        }
 
                return AUDITSC_SOCKETCALL;
        case __NR_execve:
                return AUDITSC_EXECVE;
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
        default:
                return AUDITSC_NATIVE;
        }
 
                return AUDITSC_SOCKETCALL;
        case __NR_execve:
                return AUDITSC_EXECVE;
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
        default:
                return AUDITSC_COMPAT;
        }
 
                return AUDITSC_SOCKETCALL;
        case __NR_execve:
                return AUDITSC_EXECVE;
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
        default:
                return AUDITSC_NATIVE;
        }
 
                return AUDITSC_SOCKETCALL;
        case __NR_execve:
                return AUDITSC_EXECVE;
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
        default:
                return AUDITSC_COMPAT;
        }
 
                return AUDITSC_SOCKETCALL;
        case __NR_execve:
                return AUDITSC_EXECVE;
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
        default:
                return AUDITSC_NATIVE;
        }
 
                return AUDITSC_SOCKETCALL;
        case __NR_execve:
                return AUDITSC_EXECVE;
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
        default:
                return AUDITSC_COMPAT;
        }
 
        case __NR_execve:
        case __NR_execveat:
                return AUDITSC_EXECVE;
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
        default:
                return AUDITSC_COMPAT;
        }
 
        case __NR_execve:
        case __NR_execveat:
                return AUDITSC_EXECVE;
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
        default:
                return AUDITSC_NATIVE;
        }
 
        AUDITSC_OPENAT,
        AUDITSC_SOCKETCALL,
        AUDITSC_EXECVE,
+       AUDITSC_OPENAT2,
 
        AUDITSC_NVALS /* count */
 };
 
 #include <linux/fsnotify_backend.h>
 #include <uapi/linux/limits.h>
 #include <uapi/linux/netfilter/nf_tables.h>
+#include <uapi/linux/openat2.h>
 
 #include "audit.h"
 
                return ((mask & AUDIT_PERM_WRITE) && ctx->argv[0] == SYS_BIND);
        case AUDITSC_EXECVE:
                return mask & AUDIT_PERM_EXEC;
+       case AUDITSC_OPENAT2:
+               return mask & ACC_MODE((u32)((struct open_how *)ctx->argv[2])->flags);
        default:
                return 0;
        }
 
 #endif
        case __NR_execve:
                return AUDITSC_EXECVE;
+#ifdef __NR_openat2
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
+#endif
        default:
                return AUDITSC_NATIVE;
        }
 
 #endif
        case __NR_execve:
                return AUDITSC_EXECVE;
+#ifdef __NR_openat2
+       case __NR_openat2:
+               return AUDITSC_OPENAT2;
+#endif
        default:
                return AUDITSC_COMPAT;
        }