odhcp6c: align further with RFC8415
authorHans Dedecker <dedeckeh@gmail.com>
Fri, 11 Jan 2019 14:02:11 +0000 (15:02 +0100)
committerHans Dedecker <dedeckeh@gmail.com>
Fri, 11 Jan 2019 14:05:36 +0000 (15:05 +0100)
Align acceptable options in the ORO list further with RFC8415; where
appropriate add send option support for the newly added options.

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
src/odhcp6c.c
src/odhcp6c.h

index 7e8377884790496e9eeed20f76c7efa0991c98d1..19a86f2654bf3c59b0f47cf0aedd87235187bf89 100644 (file)
@@ -95,15 +95,31 @@ static struct odhcp6c_opt opts[] = {
        { .code = DHCPV6_OPT_IA_PREFIX, .flags = OPT_INTERNAL, .str = NULL },
        { .code = DHCPV6_OPT_SNTP_SERVERS, .flags = OPT_IP6 | OPT_ARRAY | OPT_ORO, .str = "sntpservers" },
        { .code = DHCPV6_OPT_INFO_REFRESH, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU | OPT_ORO | OPT_ORO_STATELESS, .str = NULL },
+       { .code = DHCPV6_OPT_REMOTE_ID, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_SUBSCRIBER_ID, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
        { .code = DHCPV6_OPT_FQDN, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU | OPT_ORO, .str = NULL },
+       { .code = DHCPV6_OPT_ERO, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_LQ_QUERY, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_CLIENT_DATA, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_CLT_TIME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_LQ_RELAY_DATA, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_LQ_CLIENT_LINK, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_RELAY_ID, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
        { .code = DHCPV6_OPT_NTP_SERVER, .flags = OPT_U8 | OPT_ORO, .str = "ntpserver" },
+       { .code = DHCPV6_OPT_CLIENT_ARCH_TYPE, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
        { .code = DHCPV6_OPT_AFTR_NAME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU | OPT_ORO, .str = NULL },
+       { .code = DHCPV6_OPT_RSOO, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
        { .code = DHCPV6_OPT_PD_EXCLUDE, .flags = OPT_INTERNAL | OPT_ORO | OPT_ORO_STATEFUL, .str = NULL },
+       { .code = DHCPV6_OPT_VSS, .flags = OPT_U8, .str = "vss" },
+       { .code = DHCPV6_OPT_LINK_LAYER_ADDRESS, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_LINK_ADDRESS, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_RADIUS, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
        { .code = DHCPV6_OPT_SOL_MAX_RT, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU | OPT_ORO | OPT_ORO_SOLICIT, .str = NULL },
        { .code = DHCPV6_OPT_INF_MAX_RT, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU | OPT_ORO | OPT_ORO_STATELESS, .str = NULL },
 #ifdef EXT_CER_ID
        { .code = DHCPV6_OPT_CER_ID, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
 #endif
+       { .code = DHCPV6_OPT_DHCPV4_MSG, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
        { .code = DHCPV6_OPT_S46_RULE, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
        { .code = DHCPV6_OPT_S46_BR, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
        { .code = DHCPV6_OPT_S46_DMR, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
@@ -112,6 +128,38 @@ static struct odhcp6c_opt opts[] = {
        { .code = DHCPV6_OPT_S46_CONT_MAPE, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU | OPT_ORO, .str = NULL },
        { .code = DHCPV6_OPT_S46_CONT_MAPT, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU | OPT_ORO, .str = NULL },
        { .code = DHCPV6_OPT_S46_CONT_LW, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU | OPT_ORO, .str = NULL },
+       { .code = DHCPV6_OPT_LQ_BASE_TIME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_LQ_START_TIME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_LQ_END_TIME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_ANI_ATT, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_ANI_NETWORK_NAME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_ANI_AP_NAME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_ANI_AP_BSSID, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_ANI_OPERATOR_ID, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_ANI_OPERATOR_REALM, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_MUD_URL_V6, .flags = OPT_STR | OPT_NO_PASSTHRU, .str = "mud_url_v6" },
+       { .code = DHCPV6_OPT_F_BINDING_STATUS, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_CONNECT_FLAGS, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_DNS_REMOVAL_INFO, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_DNS_HOST_NAME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_DNS_ZONE_NAME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_DNS_FLAGS, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_EXPIRATION_TIME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_MAX_UNACKED_BNDUPD, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_MCLT, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_PARTNER_LIFETIME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_PARTNER_LIFETIME_SENT, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_PARTNER_DOWN_TIME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_PARTNER_RAW_CLT_TIME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_PROTOCOL_VERSION, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_KEEPALIVE_TIME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_RECONFIGURE_DATA, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_RELATIONSHIP_NAME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_SERVER_FLAGS, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_SERVER_STATE, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_START_TIME_OF_STATE, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_F_STATE_EXPIRATION_TIME, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
+       { .code = DHCPV6_OPT_RELAY_PORT, .flags = OPT_INTERNAL | OPT_NO_PASSTHRU, .str = NULL },
        { .code = 0, .flags = 0, .str = NULL },
 };
 
index 38a2ca73e9f77227037356d949fec4a153fb88c7..40ce098496eb420d56d9e616eaf971d7b663b58c 100644 (file)
@@ -62,16 +62,32 @@ enum dhcvp6_opt {
        DHCPV6_OPT_IA_PREFIX = 26,
        DHCPV6_OPT_SNTP_SERVERS = 31,
        DHCPV6_OPT_INFO_REFRESH = 32,
+       DHCPV6_OPT_REMOTE_ID = 37,
+       DHCPV6_OPT_SUBSCRIBER_ID = 38,
        DHCPV6_OPT_FQDN = 39,
+       DHCPV6_OPT_ERO = 43,
+       DHCPV6_OPT_LQ_QUERY = 44,
+       DHCPV6_OPT_CLIENT_DATA = 45,
+       DHCPV6_OPT_CLT_TIME = 46,
+       DHCPV6_OPT_LQ_RELAY_DATA = 47,
+       DHCPV6_OPT_LQ_CLIENT_LINK = 48,
+       DHCPV6_OPT_RELAY_ID = 53,
        DHCPV6_OPT_NTP_SERVER = 56,
+       DHCPV6_OPT_CLIENT_ARCH_TYPE = 61,
        DHCPV6_OPT_AFTR_NAME = 64,
+       DHCPV6_OPT_RSOO = 66,
        DHCPV6_OPT_PD_EXCLUDE = 67,
+       DHCPV6_OPT_VSS = 68,
+       DHCPV6_OPT_LINK_LAYER_ADDRESS = 79,
+       DHCPV6_OPT_LINK_ADDRESS = 80,
+       DHCPV6_OPT_RADIUS = 81,
        DHCPV6_OPT_SOL_MAX_RT = 82,
        DHCPV6_OPT_INF_MAX_RT = 83,
 #ifdef EXT_CER_ID
        /* draft-donley-dhc-cer-id-option-03 */
        DHCPV6_OPT_CER_ID = EXT_CER_ID,
 #endif
+       DHCPV6_OPT_DHCPV4_MSG = 87,
        /* draft-ietf-softwire-map-dhcp-08 */
        DHCPV6_OPT_S46_RULE = 89,
        DHCPV6_OPT_S46_BR = 90,
@@ -81,6 +97,38 @@ enum dhcvp6_opt {
        DHCPV6_OPT_S46_CONT_MAPE = 94,
        DHCPV6_OPT_S46_CONT_MAPT = 95,
        DHCPV6_OPT_S46_CONT_LW = 96,
+       DHCPV6_OPT_LQ_BASE_TIME = 100,
+       DHCPV6_OPT_LQ_START_TIME = 101,
+       DHCPV6_OPT_LQ_END_TIME = 102,
+       DHCPV6_OPT_ANI_ATT = 105,
+       DHCPV6_OPT_ANI_NETWORK_NAME = 106,
+       DHCPV6_OPT_ANI_AP_NAME = 107,
+       DHCPV6_OPT_ANI_AP_BSSID = 108,
+       DHCPV6_OPT_ANI_OPERATOR_ID = 109,
+       DHCPV6_OPT_ANI_OPERATOR_REALM = 110,
+       DHCPV6_OPT_MUD_URL_V6 = 112,
+       DHCPV6_OPT_F_BINDING_STATUS = 114,
+       DHCPV6_OPT_F_CONNECT_FLAGS = 115,
+       DHCPV6_OPT_F_DNS_REMOVAL_INFO = 116,
+       DHCPV6_OPT_F_DNS_HOST_NAME = 117,
+       DHCPV6_OPT_F_DNS_ZONE_NAME = 118,
+       DHCPV6_OPT_F_DNS_FLAGS = 119,
+       DHCPV6_OPT_F_EXPIRATION_TIME = 120,
+       DHCPV6_OPT_F_MAX_UNACKED_BNDUPD = 121,
+       DHCPV6_OPT_F_MCLT = 122,
+       DHCPV6_OPT_F_PARTNER_LIFETIME = 123,
+       DHCPV6_OPT_F_PARTNER_LIFETIME_SENT = 124,
+       DHCPV6_OPT_F_PARTNER_DOWN_TIME = 125,
+       DHCPV6_OPT_F_PARTNER_RAW_CLT_TIME = 126,
+       DHCPV6_OPT_F_PROTOCOL_VERSION = 127,
+       DHCPV6_OPT_F_KEEPALIVE_TIME = 128,
+       DHCPV6_OPT_F_RECONFIGURE_DATA = 129,
+       DHCPV6_OPT_F_RELATIONSHIP_NAME = 130,
+       DHCPV6_OPT_F_SERVER_FLAGS = 131,
+       DHCPV6_OPT_F_SERVER_STATE = 132,
+       DHCPV6_OPT_F_START_TIME_OF_STATE = 133,
+       DHCPV6_OPT_F_STATE_EXPIRATION_TIME  = 134,
+       DHCPV6_OPT_RELAY_PORT = 135,
 };
 
 enum dhcpv6_opt_npt {