/* SPDX-License-Identifier: LGPL-2.1-or-later */
#ifndef foosddhcpclienthfoo
#define foosddhcpclienthfoo

/***
  Copyright © 2013 Intel Corporation. All rights reserved.

  systemd is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation; either version 2.1 of the License, or
  (at your option) any later version.

  systemd is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public License
  along with systemd; If not, see <https://www.gnu.org/licenses/>.
***/

#include <inttypes.h>
#include <net/ethernet.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <stdbool.h>

#include "sd-device.h"
#include "sd-dhcp-lease.h"
#include "sd-dhcp-option.h"
#include "sd-event.h"

#include "_sd-common.h"

_SD_BEGIN_DECLARATIONS;

enum {
        SD_DHCP_CLIENT_EVENT_STOP               = 0,
        SD_DHCP_CLIENT_EVENT_IP_ACQUIRE         = 1,
        SD_DHCP_CLIENT_EVENT_IP_CHANGE          = 2,
        SD_DHCP_CLIENT_EVENT_EXPIRED            = 3,
        SD_DHCP_CLIENT_EVENT_RENEW              = 4,
        SD_DHCP_CLIENT_EVENT_SELECTING          = 5,
        SD_DHCP_CLIENT_EVENT_TRANSIENT_FAILURE  = 6 /* Sent when we have not received a reply after the first few attempts.
                                                     * The client may want to start acquiring link-local addresses. */
};

/* https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml#options */
enum {
        SD_DHCP_OPTION_PAD                            = 0,   /* [RFC2132] */
        SD_DHCP_OPTION_SUBNET_MASK                    = 1,   /* [RFC2132] */
        SD_DHCP_OPTION_TIME_OFFSET                    = 2,   /* [RFC2132], deprecated by 100 and 101 */
        SD_DHCP_OPTION_ROUTER                         = 3,   /* [RFC2132] */
        SD_DHCP_OPTION_TIME_SERVER                    = 4,   /* [RFC2132] */
        SD_DHCP_OPTION_NAME_SERVER                    = 5,   /* [RFC2132] */
        SD_DHCP_OPTION_DOMAIN_NAME_SERVER             = 6,   /* [RFC2132] */
        SD_DHCP_OPTION_LOG_SERVER                     = 7,   /* [RFC2132] */
        SD_DHCP_OPTION_QUOTES_SERVER                  = 8,   /* [RFC2132] */
        SD_DHCP_OPTION_LPR_SERVER                     = 9,   /* [RFC2132] */
        SD_DHCP_OPTION_IMPRESS_SERVER                 = 10,  /* [RFC2132] */
        SD_DHCP_OPTION_RLP_SERVER                     = 11,  /* [RFC2132] */
        SD_DHCP_OPTION_HOST_NAME                      = 12,  /* [RFC2132] */
        SD_DHCP_OPTION_BOOT_FILE_SIZE                 = 13,  /* [RFC2132] */
        SD_DHCP_OPTION_MERIT_DUMP_FILE                = 14,  /* [RFC2132] */
        SD_DHCP_OPTION_DOMAIN_NAME                    = 15,  /* [RFC2132] */
        SD_DHCP_OPTION_SWAP_SERVER                    = 16,  /* [RFC2132] */
        SD_DHCP_OPTION_ROOT_PATH                      = 17,  /* [RFC2132] */
        SD_DHCP_OPTION_EXTENSION_FILE                 = 18,  /* [RFC2132] */
        SD_DHCP_OPTION_FORWARD                        = 19,  /* [RFC2132] */
        SD_DHCP_OPTION_SOURCE_ROUTE                   = 20,  /* [RFC2132] */
        SD_DHCP_OPTION_POLICY_FILTER                  = 21,  /* [RFC2132] */
        SD_DHCP_OPTION_MAX_DATAGRAM_ASSEMBLY          = 22,  /* [RFC2132] */
        SD_DHCP_OPTION_DEFAULT_IP_TTL                 = 23,  /* [RFC2132] */
        SD_DHCP_OPTION_MTU_TIMEOUT                    = 24,  /* [RFC2132] */
        SD_DHCP_OPTION_MTU_PLATEAU                    = 25,  /* [RFC2132] */
        SD_DHCP_OPTION_MTU_INTERFACE                  = 26,  /* [RFC2132] */
        SD_DHCP_OPTION_MTU_SUBNET                     = 27,  /* [RFC2132] */
        SD_DHCP_OPTION_BROADCAST                      = 28,  /* [RFC2132] */
        SD_DHCP_OPTION_MASK_DISCOVERY                 = 29,  /* [RFC2132] */
        SD_DHCP_OPTION_MASK_SUPPLIER                  = 30,  /* [RFC2132] */
        SD_DHCP_OPTION_ROUTER_DISCOVERY               = 31,  /* [RFC2132] */
        SD_DHCP_OPTION_ROUTER_REQUEST                 = 32,  /* [RFC2132] */
        SD_DHCP_OPTION_STATIC_ROUTE                   = 33,  /* [RFC2132] */
        SD_DHCP_OPTION_TRAILERS                       = 34,  /* [RFC2132] */
        SD_DHCP_OPTION_ARP_TIMEOUT                    = 35,  /* [RFC2132] */
        SD_DHCP_OPTION_ETHERNET                       = 36,  /* [RFC2132] */
        SD_DHCP_OPTION_DEFAULT_TCP_TTL                = 37,  /* [RFC2132] */
        SD_DHCP_OPTION_KEEPALIVE_TIME                 = 38,  /* [RFC2132] */
        SD_DHCP_OPTION_KEEPALIVE_DATA                 = 39,  /* [RFC2132] */
        SD_DHCP_OPTION_NIS_DOMAIN                     = 40,  /* [RFC2132] */
        SD_DHCP_OPTION_NIS_SERVER                     = 41,  /* [RFC2132] */
        SD_DHCP_OPTION_NTP_SERVER                     = 42,  /* [RFC2132] */
        SD_DHCP_OPTION_VENDOR_SPECIFIC                = 43,  /* [RFC2132] */
        SD_DHCP_OPTION_NETBIOS_NAME_SERVER            = 44,  /* [RFC2132] */
        SD_DHCP_OPTION_NETBIOS_DIST_SERVER            = 45,  /* [RFC2132] */
        SD_DHCP_OPTION_NETBIOS_NODE_TYPE              = 46,  /* [RFC2132] */
        SD_DHCP_OPTION_NETBIOS_SCOPE                  = 47,  /* [RFC2132] */
        SD_DHCP_OPTION_X_WINDOW_FONT                  = 48,  /* [RFC2132] */
        SD_DHCP_OPTION_X_WINDOW_MANAGER               = 49,  /* [RFC2132] */
        SD_DHCP_OPTION_REQUESTED_IP_ADDRESS           = 50,  /* [RFC2132] */
        SD_DHCP_OPTION_IP_ADDRESS_LEASE_TIME          = 51,  /* [RFC2132] */
        SD_DHCP_OPTION_OVERLOAD                       = 52,  /* [RFC2132] */
        SD_DHCP_OPTION_MESSAGE_TYPE                   = 53,  /* [RFC2132] */
        SD_DHCP_OPTION_SERVER_IDENTIFIER              = 54,  /* [RFC2132] */
        SD_DHCP_OPTION_PARAMETER_REQUEST_LIST         = 55,  /* [RFC2132] */
        SD_DHCP_OPTION_ERROR_MESSAGE                  = 56,  /* [RFC2132] */
        SD_DHCP_OPTION_MAXIMUM_MESSAGE_SIZE           = 57,  /* [RFC2132] */
        SD_DHCP_OPTION_RENEWAL_TIME                   = 58,  /* [RFC2132] */
        SD_DHCP_OPTION_REBINDING_TIME                 = 59,  /* [RFC2132] */
        SD_DHCP_OPTION_VENDOR_CLASS_IDENTIFIER        = 60,  /* [RFC2132] */
        SD_DHCP_OPTION_CLIENT_IDENTIFIER              = 61,  /* [RFC2132] */
        SD_DHCP_OPTION_NETWARE_IP_DOMAIN              = 62,  /* [RFC2242] */
        SD_DHCP_OPTION_NETWARE_IP_OPTION              = 63,  /* [RFC2242] */
        SD_DHCP_OPTION_NIS_DOMAIN_NAME                = 64,  /* [RFC2132] */
        SD_DHCP_OPTION_NIS_SERVER_ADDR                = 65,  /* [RFC2132] */
        SD_DHCP_OPTION_BOOT_SERVER_NAME               = 66,  /* [RFC2132] */
        SD_DHCP_OPTION_BOOT_FILENAME                  = 67,  /* [RFC2132] */
        SD_DHCP_OPTION_HOME_AGENT_ADDRESSES           = 68,  /* [RFC2132] */
        SD_DHCP_OPTION_SMTP_SERVER                    = 69,  /* [RFC2132] */
        SD_DHCP_OPTION_POP3_SERVER                    = 70,  /* [RFC2132] */
        SD_DHCP_OPTION_NNTP_SERVER                    = 71,  /* [RFC2132] */
        SD_DHCP_OPTION_WWW_SERVER                     = 72,  /* [RFC2132] */
        SD_DHCP_OPTION_FINGER_SERVER                  = 73,  /* [RFC2132] */
        SD_DHCP_OPTION_IRC_SERVER                     = 74,  /* [RFC2132] */
        SD_DHCP_OPTION_STREETTALK_SERVER              = 75,  /* [RFC2132] */
        SD_DHCP_OPTION_STDA_SERVER                    = 76,  /* [RFC2132] */
        SD_DHCP_OPTION_USER_CLASS                     = 77,  /* [RFC3004] */
        SD_DHCP_OPTION_DIRECTORY_AGENT                = 78,  /* [RFC2610] */
        SD_DHCP_OPTION_SERVICE_SCOPE                  = 79,  /* [RFC2610] */
        SD_DHCP_OPTION_RAPID_COMMIT                   = 80,  /* [RFC4039] */
        SD_DHCP_OPTION_FQDN                           = 81,  /* [RFC4702] */
        SD_DHCP_OPTION_RELAY_AGENT_INFORMATION        = 82,  /* [RFC3046] */
        SD_DHCP_OPTION_ISNS                           = 83,  /* [RFC4174] */
        /* option code 84 is unassigned [RFC3679] */
        SD_DHCP_OPTION_NDS_SERVER                     = 85,  /* [RFC2241] */
        SD_DHCP_OPTION_NDS_TREE_NAME                  = 86,  /* [RFC2241] */
        SD_DHCP_OPTION_NDS_CONTEXT                    = 87,  /* [RFC2241] */
        SD_DHCP_OPTION_BCMCS_CONTROLLER_DOMAIN_NAME   = 88,  /* [RFC4280] */
        SD_DHCP_OPTION_BCMCS_CONTROLLER_ADDRESS       = 89,  /* [RFC4280] */
        SD_DHCP_OPTION_AUTHENTICATION                 = 90,  /* [RFC3118] */
        SD_DHCP_OPTION_CLIENT_LAST_TRANSACTION_TIME   = 91,  /* [RFC4388] */
        SD_DHCP_OPTION_ASSOCIATED_IP                  = 92,  /* [RFC4388] */
        SD_DHCP_OPTION_CLIENT_SYSTEM                  = 93,  /* [RFC4578] */
        SD_DHCP_OPTION_CLIENT_NDI                     = 94,  /* [RFC4578] */
        SD_DHCP_OPTION_LDAP                           = 95,  /* [RFC3679] */
        /* option code 96 is unassigned [RFC3679] */
        SD_DHCP_OPTION_UUID                           = 97,  /* [RFC4578] */
        SD_DHCP_OPTION_USER_AUTHENTICATION            = 98,  /* [RFC2485] */
        SD_DHCP_OPTION_GEOCONF_CIVIC                  = 99,  /* [RFC4776] */
        SD_DHCP_OPTION_POSIX_TIMEZONE                 = 100, /* [RFC4833] */
        SD_DHCP_OPTION_TZDB_TIMEZONE                  = 101, /* [RFC4833] */
        /* option codes 102-107 are unassigned [RFC3679] */
        SD_DHCP_OPTION_IPV6_ONLY_PREFERRED            = 108, /* [RFC8925] */
        SD_DHCP_OPTION_DHCP4O6_SOURCE_ADDRESS         = 109, /* [RFC8539] */
        /* option codes 110-111 are unassigned [RFC3679] */
        SD_DHCP_OPTION_NETINFO_ADDRESS                = 112, /* [RFC3679] */
        SD_DHCP_OPTION_NETINFO_TAG                    = 113, /* [RFC3679] */
        SD_DHCP_OPTION_DHCP_CAPTIVE_PORTAL            = 114, /* [RFC8910] */
        /* option code 115 is unassigned [RFC3679] */
        SD_DHCP_OPTION_AUTO_CONFIG                    = 116, /* [RFC2563] */
        SD_DHCP_OPTION_NAME_SERVICE_SEARCH            = 117, /* [RFC2937] */
        SD_DHCP_OPTION_SUBNET_SELECTION               = 118, /* [RFC3011] */
        SD_DHCP_OPTION_DOMAIN_SEARCH                  = 119, /* [RFC3397] */
        SD_DHCP_OPTION_SIP_SERVER                     = 120, /* [RFC3361] */
        SD_DHCP_OPTION_CLASSLESS_STATIC_ROUTE         = 121, /* [RFC3442] */
        SD_DHCP_OPTION_CABLELABS_CLIENT_CONFIGURATION = 122, /* [RFC3495] */
        SD_DHCP_OPTION_GEOCONF                        = 123, /* [RFC6225] */
        SD_DHCP_OPTION_VENDOR_CLASS                   = 124, /* [RFC3925] */
        SD_DHCP_OPTION_VENDOR_SPECIFIC_INFORMATION    = 125, /* [RFC3925] */
        /* option codes 126-127 are unassigned [RFC3679] */
        /* option codes 128-135 are assigned to use by PXE, but they are vendor specific [RFC4578] */
        SD_DHCP_OPTION_PANA_AGENT                     = 136, /* [RFC5192] */
        SD_DHCP_OPTION_LOST_SERVER_FQDN               = 137, /* [RFC5223] */
        SD_DHCP_OPTION_CAPWAP_AC_ADDRESS              = 138, /* [RFC5417] */
        SD_DHCP_OPTION_MOS_ADDRESS                    = 139, /* [RFC5678] */
        SD_DHCP_OPTION_MOS_FQDN                       = 140, /* [RFC5678] */
        SD_DHCP_OPTION_SIP_SERVICE_DOMAIN             = 141, /* [RFC6011] */
        SD_DHCP_OPTION_ANDSF_ADDRESS                  = 142, /* [RFC6153] */
        SD_DHCP_OPTION_SZTP_REDIRECT                  = 143, /* [RFC8572] */
        SD_DHCP_OPTION_GEOLOC                         = 144, /* [RFC6225] */
        SD_DHCP_OPTION_FORCERENEW_NONCE_CAPABLE       = 145, /* [RFC6704] */
        SD_DHCP_OPTION_RDNSS_SELECTION                = 146, /* [RFC6731] */
        SD_DHCP_OPTION_DOTS_RI                        = 147, /* [RFC8973] */
        SD_DHCP_OPTION_DOTS_ADDRESS                   = 148, /* [RFC8973] */
        /* option code 149 is unassigned [RFC3942] */
        SD_DHCP_OPTION_TFTP_SERVER_ADDRESS            = 150, /* [RFC5859] */
        SD_DHCP_OPTION_STATUS_CODE                    = 151, /* [RFC6926] */
        SD_DHCP_OPTION_BASE_TIME                      = 152, /* [RFC6926] */
        SD_DHCP_OPTION_START_TIME_OF_STATE            = 153, /* [RFC6926] */
        SD_DHCP_OPTION_QUERY_START_TIME               = 154, /* [RFC6926] */
        SD_DHCP_OPTION_QUERY_END_TIME                 = 155, /* [RFC6926] */
        SD_DHCP_OPTION_DHCP_STATE                     = 156, /* [RFC6926] */
        SD_DHCP_OPTION_DATA_SOURCE                    = 157, /* [RFC6926] */
        SD_DHCP_OPTION_PCP_SERVER                     = 158, /* [RFC7291] */
        SD_DHCP_OPTION_PORT_PARAMS                    = 159, /* [RFC7618] */
        /* option code 160 is unassigned [RFC7710][RFC8910] */
        SD_DHCP_OPTION_MUD_URL                        = 161, /* [RFC8520] */
        /* option codes 162-174 are unassigned [RFC3942] */
        /* option codes 175-177 are temporary assigned. */
        /* option codes 178-207 are unassigned [RFC3942] */
        SD_DHCP_OPTION_PXELINUX_MAGIC                 = 208, /* [RFC5071] Deprecated */
        SD_DHCP_OPTION_CONFIGURATION_FILE             = 209, /* [RFC5071] */
        SD_DHCP_OPTION_PATH_PREFIX                    = 210, /* [RFC5071] */
        SD_DHCP_OPTION_REBOOT_TIME                    = 211, /* [RFC5071] */
        SD_DHCP_OPTION_6RD                            = 212, /* [RFC5969] */
        SD_DHCP_OPTION_ACCESS_DOMAIN                  = 213, /* [RFC5986] */
        /* option codes 214-219 are unassigned */
        SD_DHCP_OPTION_SUBNET_ALLOCATION              = 220, /* [RFC6656] */
        SD_DHCP_OPTION_VIRTUAL_SUBNET_SELECTION       = 221, /* [RFC6607] */
        /* option codes 222-223 are unassigned [RFC3942] */
        /* option codes 224-254 are reserved for private use */
        SD_DHCP_OPTION_PRIVATE_BASE                   = 224,
        SD_DHCP_OPTION_PRIVATE_CLASSLESS_STATIC_ROUTE = 249, /* [RFC7844] */
        SD_DHCP_OPTION_PRIVATE_PROXY_AUTODISCOVERY    = 252, /* [RFC7844] */
        SD_DHCP_OPTION_PRIVATE_LAST                   = 254,
        SD_DHCP_OPTION_END                            = 255 /* [RFC2132] */
};

/* Suboptions for SD_DHCP_OPTION_RELAY_AGENT_INFORMATION option */
enum {
        SD_DHCP_RELAY_AGENT_CIRCUIT_ID             = 1,
        SD_DHCP_RELAY_AGENT_REMOTE_ID              = 2
};

typedef struct sd_dhcp_client sd_dhcp_client;

typedef int (*sd_dhcp_client_callback_t)(sd_dhcp_client *client, int event, void *userdata);
int sd_dhcp_client_set_callback(
                sd_dhcp_client *client,
                sd_dhcp_client_callback_t cb,
                void *userdata);

int sd_dhcp_client_set_request_option(
                sd_dhcp_client *client,
                uint8_t option);
int sd_dhcp_client_set_request_address(
                sd_dhcp_client *client,
                const struct in_addr *last_address);
int sd_dhcp_client_set_request_broadcast(
                sd_dhcp_client *client,
                int broadcast);
int sd_dhcp_client_set_ifindex(
                sd_dhcp_client *client,
                int interface_index);
int sd_dhcp_client_set_ifname(
                sd_dhcp_client *client,
                const char *interface_name);
int sd_dhcp_client_get_ifname(sd_dhcp_client *client, const char **ret);
int sd_dhcp_client_set_mac(
                sd_dhcp_client *client,
                const uint8_t *hw_addr,
                const uint8_t *bcast_addr,
                size_t addr_len,
                uint16_t arp_type);
int sd_dhcp_client_set_client_id(
                sd_dhcp_client *client,
                uint8_t type,
                const uint8_t *data,
                size_t data_len);
__extension__ int sd_dhcp_client_set_iaid_duid(
                sd_dhcp_client *client,
                bool iaid_set,
                uint32_t iaid,
                uint16_t duid_type,
                const void *duid,
                size_t duid_len);
__extension__ int sd_dhcp_client_set_iaid_duid_llt(
                sd_dhcp_client *client,
                bool iaid_set,
                uint32_t iaid,
                uint64_t llt_time);
int sd_dhcp_client_set_duid(
                sd_dhcp_client *client,
                uint16_t duid_type,
                const void *duid,
                size_t duid_len);
int sd_dhcp_client_set_duid_llt(
                sd_dhcp_client *client,
                uint64_t llt_time);
int sd_dhcp_client_get_client_id(
                sd_dhcp_client *client,
                uint8_t *type,
                const uint8_t **data,
                size_t *data_len);
int sd_dhcp_client_set_mtu(
                sd_dhcp_client *client,
                uint32_t mtu);
int sd_dhcp_client_set_max_attempts(
                sd_dhcp_client *client,
                uint64_t attempt);
int sd_dhcp_client_set_client_port(
                sd_dhcp_client *client,
                uint16_t port);
int sd_dhcp_client_set_hostname(
                sd_dhcp_client *client,
                const char *hostname);
int sd_dhcp_client_set_vendor_class_identifier(
                sd_dhcp_client *client,
                const char *vci);
int sd_dhcp_client_set_mud_url(
                sd_dhcp_client *client,
                const char *mudurl);
int sd_dhcp_client_set_user_class(
                sd_dhcp_client *client,
                char * const *user_class);
int sd_dhcp_client_get_lease(
                sd_dhcp_client *client,
                sd_dhcp_lease **ret);
int sd_dhcp_client_set_service_type(
                sd_dhcp_client *client,
                int type);
int sd_dhcp_client_set_socket_priority(
                sd_dhcp_client *client,
                int so_priority);
int sd_dhcp_client_set_fallback_lease_lifetime(
                sd_dhcp_client *client,
                uint32_t fallback_lease_lifetime);

int sd_dhcp_client_add_option(sd_dhcp_client *client, sd_dhcp_option *v);
int sd_dhcp_client_add_vendor_option(sd_dhcp_client *client, sd_dhcp_option *v);

int sd_dhcp_client_is_running(sd_dhcp_client *client);
int sd_dhcp_client_stop(sd_dhcp_client *client);
int sd_dhcp_client_start(sd_dhcp_client *client);
int sd_dhcp_client_send_release(sd_dhcp_client *client);
int sd_dhcp_client_send_decline(sd_dhcp_client *client);
int sd_dhcp_client_send_renew(sd_dhcp_client *client);

sd_dhcp_client *sd_dhcp_client_ref(sd_dhcp_client *client);
sd_dhcp_client *sd_dhcp_client_unref(sd_dhcp_client *client);

/* NOTE: anonymize parameter is used to initialize PRL memory with different
 * options when using RFC7844 Anonymity Profiles */
int sd_dhcp_client_new(sd_dhcp_client **ret, int anonymize);

int sd_dhcp_client_id_to_string(const void *data, size_t len, char **ret);

int sd_dhcp_client_attach_event(
                sd_dhcp_client *client,
                sd_event *event,
                int64_t priority);
int sd_dhcp_client_detach_event(sd_dhcp_client *client);
sd_event *sd_dhcp_client_get_event(sd_dhcp_client *client);
int sd_dhcp_client_attach_device(sd_dhcp_client *client, sd_device *dev);

_SD_DEFINE_POINTER_CLEANUP_FUNC(sd_dhcp_client, sd_dhcp_client_unref);

_SD_END_DECLARATIONS;

#endif
