/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package android.net;

enum EventType {
    EVENT_UNKNOWN = 0;
    EVENT_GETADDRINFO = 1;
    EVENT_GETHOSTBYNAME = 2;
    EVENT_GETHOSTBYADDR = 3;
    EVENT_RES_NSEND = 4;
}

// The return value of the DNS resolver for each DNS lookups.
// bionic/libc/include/netdb.h
// system/netd/resolv/include/netd_resolv/resolv.h
enum ReturnCode {
    RC_EAI_NO_ERROR = 0;
    RC_EAI_ADDRFAMILY = 1;
    RC_EAI_AGAIN = 2;
    RC_EAI_BADFLAGS = 3;
    RC_EAI_FAIL = 4;
    RC_EAI_FAMILY = 5;
    RC_EAI_MEMORY = 6;
    RC_EAI_NODATA = 7;
    RC_EAI_NONAME = 8;
    RC_EAI_SERVICE = 9;
    RC_EAI_SOCKTYPE = 10;
    RC_EAI_SYSTEM = 11;
    RC_EAI_BADHINTS = 12;
    RC_EAI_PROTOCOL = 13;
    RC_EAI_OVERFLOW = 14;
    RC_RESOLV_INTERNAL_ERROR = 254;
    RC_RESOLV_TIMEOUT = 255;
    RC_EAI_MAX = 256;
}

enum NsRcode {
    NS_R_NO_ERROR = 0;  // No error occurred.
    NS_R_FORMERR = 1;   // Format error.
    NS_R_SERVFAIL = 2;  // Server failure.
    NS_R_NXDOMAIN = 3;  // Name error.
    NS_R_NOTIMPL = 4;   // Unimplemented.
    NS_R_REFUSED = 5;   // Operation refused.
    // these are for BIND_UPDATE
    NS_R_YXDOMAIN = 6;  // Name exists
    NS_R_YXRRSET = 7;   // RRset exists
    NS_R_NXRRSET = 8;   // RRset does not exist
    NS_R_NOTAUTH = 9;   // Not authoritative for zone
    NS_R_NOTZONE = 10;  // Zone of record different from zone section
    NS_R_MAX = 11;
    // Define rcode=12~15(UNASSIGNED) in rcode enum type.
    // Some DNS Servers might return undefined code to devices.
    // Without the enum definition, that would be noise for our dashboard.
    NS_R_UNASSIGNED12 = 12; // Unassigned
    NS_R_UNASSIGNED13 = 13; // Unassigned
    NS_R_UNASSIGNED14 = 14; // Unassigned
    NS_R_UNASSIGNED15 = 15; // Unassigned
    // The following are EDNS extended rcodes
    NS_R_BADVERS = 16;
    // The following are TSIG errors
    // NS_R_BADSIG  = 16,
    NS_R_BADKEY = 17;
    NS_R_BADTIME = 18;
    NS_R_INTERNAL_ERROR = 254;
    NS_R_TIMEOUT = 255;
}

// Currently defined type values for resources and queries.
enum NsType {
    NS_T_INVALID = 0;      // Cookie.
    NS_T_A = 1;            // Host address.
    NS_T_NS = 2;           // Authoritative server.
    NS_T_MD = 3;           // Mail destination.
    NS_T_MF = 4;           // Mail forwarder.
    NS_T_CNAME = 5;        // Canonical name.
    NS_T_SOA = 6;          // Start of authority zone.
    NS_T_MB = 7;           // Mailbox domain name.
    NS_T_MG = 8;           // Mail group member.
    NS_T_MR = 9;           // Mail rename name.
    NS_T_NULL = 10;        // Null resource record.
    NS_T_WKS = 11;         // Well known service.
    NS_T_PTR = 12;         // Domain name pointer.
    NS_T_HINFO = 13;       // Host information.
    NS_T_MINFO = 14;       // Mailbox information.
    NS_T_MX = 15;          // Mail routing information.
    NS_T_TXT = 16;         // Text strings.
    NS_T_RP = 17;          // Responsible person.
    NS_T_AFSDB = 18;       // AFS cell database.
    NS_T_X25 = 19;         // X_25 calling address.
    NS_T_ISDN = 20;        // ISDN calling address.
    NS_T_RT = 21;          // Router.
    NS_T_NSAP = 22;        // NSAP address.
    NS_T_NSAP_PTR = 23;    // Reverse NSAP lookup (deprecated).
    NS_T_SIG = 24;         // Security signature.
    NS_T_KEY = 25;         // Security key.
    NS_T_PX = 26;          // X.400 mail mapping.
    NS_T_GPOS = 27;        // Geographical position (withdrawn).
    NS_T_AAAA = 28;        // IPv6 Address.
    NS_T_LOC = 29;         // Location Information.
    NS_T_NXT = 30;         // Next domain (security).
    NS_T_EID = 31;         // Endpoint identifier.
    NS_T_NIMLOC = 32;      // Nimrod Locator.
    NS_T_SRV = 33;         // Server Selection.
    NS_T_ATMA = 34;        // ATM Address
    NS_T_NAPTR = 35;       // Naming Authority PoinTeR
    NS_T_KX = 36;          // Key Exchange
    NS_T_CERT = 37;        // Certification record
    NS_T_A6 = 38;          // IPv6 address (experimental)
    NS_T_DNAME = 39;       // Non-terminal DNAME
    NS_T_SINK = 40;        // Kitchen sink (experimentatl)
    NS_T_OPT = 41;         // EDNS0 option (meta-RR)
    NS_T_APL = 42;         // Address prefix list (RFC 3123)
    NS_T_DS = 43;          // Delegation Signer
    NS_T_SSHFP = 44;       // SSH Fingerprint
    NS_T_IPSECKEY = 45;    // IPSEC Key
    NS_T_RRSIG = 46;       // RRset Signature
    NS_T_NSEC = 47;        // Negative security
    NS_T_DNSKEY = 48;      // DNS Key
    NS_T_DHCID = 49;       // Dynamic host configuratin identifier
    NS_T_NSEC3 = 50;       // Negative security type 3
    NS_T_NSEC3PARAM = 51;  // Negative security type 3 parameters
    NS_T_HIP = 55;         // Host Identity Protocol
    NS_T_SPF = 99;         // Sender Policy Framework
    NS_T_TKEY = 249;       // Transaction key
    NS_T_TSIG = 250;       // Transaction signature.
    NS_T_IXFR = 251;       // Incremental zone transfer.
    NS_T_AXFR = 252;       // Transfer zone of authority.
    NS_T_MAILB = 253;      // Transfer mailbox records.
    NS_T_MAILA = 254;      // Transfer mail agent records.
    NS_T_ANY = 255;        // Wildcard match.
    NS_T_ZXFR = 256;       // BIND-specific, nonstandard.
    NS_T_DLV = 32769;      // DNSSEC look-aside validatation.
    NS_T_MAX = 65536;
}

enum IpVersion {
    IV_UNKNOWN = 0;
    IV_IPV4 = 1;
    IV_IPV6 = 2;
}

enum Protocol {
    PROTO_UNKNOWN = 0;
    PROTO_UDP = 1;
    PROTO_TCP = 2;
    PROTO_DOT = 3;
}

enum PrivateDnsModes {
    PDM_UNKNOWN = 0;
    PDM_OFF = 1;
    PDM_OPPORTUNISTIC = 2;
    PDM_STRICT = 3;
}

enum NetworkType {
    NT_UNKNOWN = 0;
    // Indicates this network uses a Cellular transport.
    NT_CELLULAR = 1;
    // Indicates this network uses a Wi-Fi transport.
    NT_WIFI = 2;
    // Indicates this network uses a Bluetooth transport.
    NT_BLUETOOTH = 3;
    // Indicates this network uses an Ethernet transport.
    NT_ETHERNET = 4;
    // Indicates this network uses a VPN transport, now deprecated.
    NT_VPN = 5 [deprecated=true];
    // Indicates this network uses a Wi-Fi Aware transport.
    NT_WIFI_AWARE = 6;
    // Indicates this network uses a LoWPAN transport.
    NT_LOWPAN = 7;
    // Indicates this network uses a Cellular+VPN transport.
    NT_CELLULAR_VPN = 8;
    // Indicates this network uses a Wi-Fi+VPN transport.
    NT_WIFI_VPN = 9;
    // Indicates this network uses a Bluetooth+VPN transport.
    NT_BLUETOOTH_VPN = 10;
    // Indicates this network uses an Ethernet+VPN transport.
    NT_ETHERNET_VPN = 11;
    // Indicates this network uses a Wi-Fi+Cellular+VPN transport.
    NT_WIFI_CELLULAR_VPN = 12;
}

enum CacheStatus{
    // the cache can't handle that kind of queries.
    // or the answer buffer is too small.
    CS_UNSUPPORTED = 0;
    // the cache doesn't know about this query.
    CS_NOTFOUND = 1;
    // the cache found the answer.
    CS_FOUND = 2;
    // Don't do anything on cache.
    CS_SKIP = 3;
}

// The enum LinuxErrno is defined in the following 2 files.
// 1. bionic/libc/kernel/uapi/asm-generic/errno-base.h
// 2. bionic/libc/kernel/uapi/asm-generic/errno.h
enum LinuxErrno {
    SYS_NO_ERROR = 0;
    SYS_EPERM = 1;              // Not super-user
    SYS_ENOENT = 2;             // No such file or directory
    SYS_ESRCH = 3;              // No such process
    SYS_EINTR = 4;              // Interrupted system call
    SYS_EIO = 5;                // I/O error
    SYS_ENXIO = 6;              // No such device or address
    SYS_E2BIG = 7;              // Arg list too long
    SYS_ENOEXEC = 8;            // Exec format error
    SYS_EBADF = 9;              // Bad file number
    SYS_ECHILD = 10;            // No children
    SYS_EAGAIN = 11;            // No more processes
    SYS_ENOMEM = 12;            // Not enough core
    SYS_EACCES = 13;            // Permission denied
    SYS_EFAULT = 14;            // Bad address
    SYS_ENOTBLK = 15;           // Block device required
    SYS_EBUSY = 16;             // Mount device busy
    SYS_EEXIST = 17;            // File exists
    SYS_EXDEV = 18;             // Cross-device link
    SYS_ENODEV = 19;            // No such device
    SYS_ENOTDIR = 20;           // Not a directory
    SYS_EISDIR = 21;            // Is a directory
    SYS_EINVAL = 22;            // Invalid argument
    SYS_ENFILE = 23;            // Too many open files in system
    SYS_EMFILE = 24;            // Too many open files
    SYS_ENOTTY = 25;            // Not a typewriter
    SYS_ETXTBSY = 26;           // Text file busy
    SYS_EFBIG = 27;             // File too large
    SYS_ENOSPC = 28;            // No space left on device
    SYS_ESPIPE = 29;            // Illegal seek
    SYS_EROFS = 30;             // Read only file system
    SYS_EMLINK = 31;            // Too many links
    SYS_EPIPE = 32;             // Broken pipe
    SYS_EDOM = 33;              // Math arg out of domain of func
    SYS_ERANGE = 34;            // Math result not representable
    SYS_EDEADLOCK = 35;         // File locking deadlock error
    SYS_ENAMETOOLONG = 36;      // File or path name too long
    SYS_ENOLCK = 37;            // No record locks available
    SYS_ENOSYS = 38;            // Function not implemented
    SYS_ENOTEMPTY = 39;         // Directory not empty
    SYS_ELOOP = 40;             // Too many symbolic links
    SYS_ENOMSG = 42;            // No message of desired type
    SYS_EIDRM = 43;             // Identifier removed
    SYS_ECHRNG = 44;            // Channel number out of range
    SYS_EL2NSYNC = 45;          // Level 2 not synchronized
    SYS_EL3HLT = 46;            // Level 3 halted
    SYS_EL3RST = 47;            // Level 3 reset
    SYS_ELNRNG = 48;            // Link number out of range
    SYS_EUNATCH = 49;           // rotocol driver not attached
    SYS_ENOCSI = 50;            // No CSI structure available
    SYS_EL2HLT = 51;            // Level 2 halted
    SYS_EBADE = 52;             // Invalid exchange
    SYS_EBADR = 53;             // Invalid request descriptor
    SYS_EXFULL = 54;            // Exchange full
    SYS_ENOANO = 55;            // No anode
    SYS_EBADRQC = 56;           // Invalid request code
    SYS_EBADSLT = 57;           // Invalid slot
    SYS_EBFONT = 59;            // Bad font file fmt
    SYS_ENOSTR = 60;            // Device not a stream
    SYS_ENODATA = 61;           // No data (for no delay io)
    SYS_ETIME = 62;             // Timer expired
    SYS_ENOSR = 63;             // Out of streams resources
    SYS_ENONET = 64;            // Machine is not on the network
    SYS_ENOPKG = 65;            // Package not installed
    SYS_EREMOTE = 66;           // The object is remote
    SYS_ENOLINK = 67;           // The link has been severed
    SYS_EADV = 68;              // Advertise error
    SYS_ESRMNT = 69;            // Srmount error
    SYS_ECOMM = 70;             // Communication error on send
    SYS_EPROTO = 71;            // Protocol error
    SYS_EMULTIHOP = 72;         // Multihop attempted
    SYS_EDOTDOT = 73;           // Cross mount point (not really error)
    SYS_EBADMSG = 74;           // Trying to read unreadable message
    SYS_EOVERFLOW = 75;         // Value too large for defined data type
    SYS_ENOTUNIQ = 76;          // Given log. name not unique
    SYS_EBADFD = 77;            // f.d. invalid for this operation
    SYS_EREMCHG = 78;           // Remote address changed
    SYS_ELIBACC = 79;           // Can't access a needed shared lib
    SYS_ELIBBAD = 80;           // Accessing a corrupted shared lib
    SYS_ELIBSCN = 81;           // .lib section in a.out corrupted
    SYS_ELIBMAX = 82;           // Attempting to link in too many libs
    SYS_ELIBEXEC = 83;          // Attempting to exec a shared library
    SYS_EILSEQ = 84;
    SYS_ERESTART = 85;
    SYS_ESTRPIPE = 86;
    SYS_EUSERS = 87;
    SYS_ENOTSOCK = 88;          // Socket operation on non-socket
    SYS_EDESTADDRREQ = 89;      // Destination address required
    SYS_EMSGSIZE = 90;          // Message too long
    SYS_EPROTOTYPE = 91;        // Protocol wrong type for socket
    SYS_ENOPROTOOPT = 92;       // Protocol not available
    SYS_EPROTONOSUPPORT = 93;   // Unknown protocol
    SYS_ESOCKTNOSUPPORT = 94;   // Socket type not supported
    SYS_EOPNOTSUPP = 95;        // Operation not supported on transport endpoint
    SYS_EPFNOSUPPORT = 96;      // Protocol family not supported
    SYS_EAFNOSUPPORT = 97;      // Address family not supported by protocol family
    SYS_EADDRINUSE = 98;        // Address already in use
    SYS_EADDRNOTAVAIL = 99;     // Address not available
    SYS_ENETDOWN = 100;         // Network interface is not configured
    SYS_ENETUNREACH = 101;      // Network is unreachable
    SYS_ENETRESET = 102;
    SYS_ECONNABORTED = 103;     // Connection aborted
    SYS_ECONNRESET = 104;       // Connection reset by peer
    SYS_ENOBUFS = 105;          // No buffer space available
    SYS_EISCONN = 106;          // Socket is already connected
    SYS_ENOTCONN = 107;         // Socket is not connected
    SYS_ESHUTDOWN = 108;        // Can't send after socket shutdown
    SYS_ETOOMANYREFS = 109;
    SYS_ETIMEDOUT = 110;        // Connection timed out
    SYS_ECONNREFUSED = 111;     // Connection refused
    SYS_EHOSTDOWN = 112;        // Host is down
    SYS_EHOSTUNREACH = 113;     // Host is unreachable
    SYS_EALREADY = 114;         // Socket already connected
    SYS_EINPROGRESS = 115;      // Connection already in progress
    SYS_ESTALE = 116;
    SYS_EUCLEAN = 117;
    SYS_ENOTNAM = 118;
    SYS_ENAVAIL = 119;
    SYS_EISNAM = 120;
    SYS_EREMOTEIO = 121;
    SYS_EDQUOT = 122;
    SYS_ENOMEDIUM = 123;        // No medium (in tape drive)
    SYS_EMEDIUMTYPE = 124;
    SYS_ECANCELED = 125;
    SYS_ENOKEY = 126;
    SYS_EKEYEXPIRED = 127;
    SYS_EKEYREVOKED = 128;
    SYS_EKEYREJECTED = 129;
    SYS_EOWNERDEAD = 130;
    SYS_ENOTRECOVERABLE = 131;
    SYS_ERFKILL = 132;
    SYS_EHWPOISON = 133;
}

message DnsQueryEvent {
    optional NsRcode rcode = 1;

    optional NsType type = 2;

    optional CacheStatus cache_hit = 3;

    optional IpVersion ip_version = 4;

    optional Protocol protocol = 5;

    // Number of DNS query retry times
    optional int32 retry_times = 6;

    // Ordinal number of name server.
    optional int32 dns_server_index = 7;

    // Used only by TCP and DOT. True for new connections.
    optional bool connected = 8;

    optional int32 latency_micros = 9;

    optional LinuxErrno linux_errno = 10;
}

message DnsQueryEvents {
    repeated DnsQueryEvent dns_query_event = 1;
}

/**
 * Logs a DNS lookup operation initiated by the system resolver on behalf of an application
 * invoking native APIs such as getaddrinfo() or Java APIs such as Network#getAllByName().
 *
 * The NetworkDnsEventReported message represents the entire lookup operation, which may
 * result one or more queries to the recursive DNS resolvers. Those are individually logged
 * in DnsQueryEvents to enable computing error rates and network latency and timeouts
 * broken up by query type, transport, network interface, etc.
 */
message NetworkDnsEventReported {
    optional EventType event_type = 1;

    optional ReturnCode return_code = 2;

    // The latency in microseconds of the entire DNS lookup operation.
    optional int32 latency_micros = 3;

    // Only valid for event_type = EVENT_GETADDRINFO.
    optional int32 hints_ai_flags = 4;

    // Flags passed to android_res_nsend() defined in multinetwork.h
    // Only valid for event_type = EVENT_RESNSEND.
    optional int32 res_nsend_flags = 5;

    optional NetworkType network_type = 6;

    // The DNS over TLS mode on a specific netId.
    optional PrivateDnsModes private_dns_modes = 7;

    // Additional pass-through fields opaque to statsd.
    // The DNS resolver Mainline module can add new fields here without requiring an OS update.
    optional DnsQueryEvents dns_query_events = 8;

    // The sample rate of DNS stats (to statsd) is 1/sampling_rate_denom.
    optional int32 sampling_rate_denom = 9;
}
