From: Alan T. DeKok Date: Thu, 31 Oct 2019 20:00:41 +0000 (-0400) Subject: auto-generate VALUEs for Option-Request X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7a2c7355abda0b3b2fd8ef52cd91ad005c85a797;p=thirdparty%2Ffreeradius-server.git auto-generate VALUEs for Option-Request --- diff --git a/share/dictionary/dhcpv6/dictionary.rfc3315 b/share/dictionary/dhcpv6/dictionary.rfc3315 index 55334806f7e..66dc980bcf7 100644 --- a/share/dictionary/dhcpv6/dictionary.rfc3315 +++ b/share/dictionary/dhcpv6/dictionary.rfc3315 @@ -65,150 +65,6 @@ MEMBER IA-Addr-Options octets # really sub-options ATTRIBUTE Option-Request 6 uint16 array # Magic option listing requested options -# -# grep ^ATTRIBUTE share/dictionary/dhcpv6/dictionary.rfc* | awk '{ print "VALUE\tOption-Request\t" $2 "\t" $3}' -# -VALUE Option-Request Client-ID 1 -VALUE Option-Request Server-ID 2 -VALUE Option-Request IA-NA 3 -VALUE Option-Request IA-TA 4 -VALUE Option-Request IA-Addr 5 -VALUE Option-Request Option-Request 6 -VALUE Option-Request Preference 7 -VALUE Option-Request Elapsed-Time 8 -VALUE Option-Request Relay-Message 9 -VALUE Option-Request Auth 11 -VALUE Option-Request Unicast 12 -VALUE Option-Request Status-Code 13 -VALUE Option-Request Rapid-Commit 14 -VALUE Option-Request User-Class 15 -VALUE Option-Request Vendor-Class 16 -VALUE Option-Request Vendor-Opts 17 -VALUE Option-Request Interface-ID 18 -VALUE Option-Request Reconf-Msg 19 -VALUE Option-Request Reconf-Accept 20 -VALUE Option-Request SIP-Server-Domain-Name-List 21 -VALUE Option-Request SIP-Server-Address 22 -VALUE Option-Request IA-PD 25 -VALUE Option-Request IA-PD-Prefix 26 -VALUE Option-Request DNS-Servers 23 -VALUE Option-Request Domain-List 24 -VALUE Option-Request NIS-Servers 27 -VALUE Option-Request NIS-Plus-Servers 28 -VALUE Option-Request NIS-Domain-Name 29 -VALUE Option-Request NIS-Plus-Domain-Name 30 -VALUE Option-Request SNTP-Servers 31 -VALUE Option-Request Information-Refresh-Time 32 -VALUE Option-Request BCMCS-Server-Domain-Name-List 33 -VALUE Option-Request BCMCS-Server-Address 34 -VALUE Option-Request Subscriber-ID 38 -VALUE Option-Request Relay-Agent-Remote-ID 37 -VALUE Option-Request Client-FQDN 39 -VALUE Option-Request Geoconf-Civic 36 -VALUE Option-Request New-Posix-Timezone 41 -VALUE Option-Request New-TZDB-Timezone 42 -VALUE Option-Request Relay-Agent-Echo-Request 43 -VALUE Option-Request Lease-Query 44 -VALUE Option-Request Client-Data 45 -VALUE Option-Request Client-Last-Transaction-Time 46 -VALUE Option-Request Lease-Query-Relay-Data 47 -VALUE Option-Request Lease-Query-Client-Link 48 -VALUE Option-Request PANA-Authentication-Agent 40 -VALUE Option-Request LoST 51 -VALUE Option-Request Capwap-AC 52 -VALUE Option-Request Relay-ID 53 -VALUE Option-Request MOD-Address-List 54 -VALUE Option-Request MOS-Address-IS 1 -VALUE Option-Request MOS-Address-CS 2 -VALUE Option-Request MOS-Address-ES 3 -VALUE Option-Request MOS-Domain-Name-List 55 -VALUE Option-Request MOS-Domain-Name-IS 1 -VALUE Option-Request MOS-Domain-Name-CS 2 -VALUE Option-Request MOS-Domain-Name-ES 3 -VALUE Option-Request NTP-Server 56 -VALUE Option-Request NTP-Server-Address 1 -VALUE Option-Request NTP-Server-Multicast-Address 2 -VALUE Option-Request NTP-Server-FQDN 3 -VALUE Option-Request Bootfile-URL 59 -VALUE Option-Request Bootfile-Param 60 -VALUE Option-Request Client-Arch-Type 61 -VALUE Option-Request Client-Network-Interface-ID 62 -VALUE Option-Request LIS-Access-Domain 57 -VALUE Option-Request SIP-US-CS-Domain-List 58 -VALUE Option-Request ANDSF-Address 143 -VALUE Option-Request Geolocation 63 -VALUE Option-Request AFTR-Name 64 -VALUE Option-Request Relay-Supplied-Options 66 -VALUE Option-Request ERP-Local-Domain-Name 65 -VALUE Option-Request PD-Exclude 67 -VALUE Option-Request Virtual-Subnet-Selection 68 -VALUE Option-Request MIP6-Home-Net-ID-FQDN 49 -VALUE Option-Request MIP6-Home-Net-Info 50 -VALUE Option-Request MIP6-Identified-Home-Net-Info 69 -VALUE Option-Request MIP6-Unrestricted-Home-Net-Info 70 -VALUE Option-Request MIP6-Home-Net-Prefix 71 -VALUE Option-Request MIP6-Home-Net-Address 72 -VALUE Option-Request MIP6-Home-Agent-FQDN 73 -VALUE Option-Request DNS-Recursive-Name-Server 74 -VALUE Option-Request Kerberos-Principal-Name 75 -VALUE Option-Request Kerberos-Realm-Name 76 -VALUE Option-Request Kerberos-Default-Realm-Name 77 -VALUE Option-Request Kerberos-KDC 78 -VALUE Option-Request Client-Link-Layer 79 -VALUE Option-Request Link-Address 80 -VALUE Option-Request RADIUS 81 -VALUE Option-Request Address-Selection 84 -VALUE Option-Request Address-Selection-Table 85 -VALUE Option-Request SOL-Max-RT 82 -VALUE Option-Request INF-Max-RT 83 -VALUE Option-Request PCP-Server 86 -VALUE Option-Request DHCPv4-Msg 87 -VALUE Option-Request S46-Rule 89 -VALUE Option-Request S46-Border-Relay 90 -VALUE Option-Request S46-Default-Mapping-Rule 91 -VALUE Option-Request S46-Address-Binding 92 -VALUE Option-Request S46-Port-Parameters 93 -VALUE Option-Request S46-MAP-Cont-E 94 -VALUE Option-Request S46-MAP-Cont-T 95 -VALUE Option-Request S46-Cont-LW 96 -VALUE Option-Request 4RD 97 -VALUE Option-Request 4RD-Map-Rule 98 -VALUE Option-Request 4RD-Non-Map-Rule 99 -VALUE Option-Request Lease-Query-Base-Time 100 -VALUE Option-Request Lease-Query-Start-Time 101 -VALUE Option-Request Lease-Query-End-Time 102 -VALUE Option-Request Captive-Portal-URI 103 -VALUE Option-Request MPL-Parameters 104 -VALUE Option-Request ANI-Access-Technology-Type 105 -VALUE Option-Request ANI-Network-Name 106 -VALUE Option-Request ANI-Access-Point-Name 107 -VALUE Option-Request ANI-Access-Point-BSSID 108 -VALUE Option-Request ANI-Operator-Identifier 109 -VALUE Option-Request ANI-Operator-Realm 110 -VALUE Option-Request S46-Priority 111 -VALUE Option-Request Prefix64 113 -VALUE Option-Request Failover-Binding-Status 114 -VALUE Option-Request Failover-Connect-Flags 115 -VALUE Option-Request Failover-DNS-Removal-Info 116 -VALUE Option-Request Failover-DNS-Host-Name 117 -VALUE Option-Request Failover-DNS-Zone-Name 118 -VALUE Option-Request Failover-DNS-Flags 119 -VALUE Option-Request Failover-Expiration-Time 120 -VALUE Option-Request Failover-Max-Unacked-BNDUPD 121 -VALUE Option-Request Failover-Max-Client-Lead-Time 122 -VALUE Option-Request Failover-Max-Partner-Lifetime 123 -VALUE Option-Request Failover-Partner-Lifetime-Sent 124 -VALUE Option-Request Failover-Partner-Down-Time 125 -VALUE Option-Request Failover-Partner-Raw-CLT-Time 126 -VALUE Option-Request Failover-Protocol-Version 127 -VALUE Option-Request Failover-Keepalive-Time 128 -VALUE Option-Request Failover-Reconfigure-Data 129 -VALUE Option-Request Failover-Relationship-Name 130 -VALUE Option-Request Failover-Server-Flags 131 -VALUE Option-Request Failover-Server-State 132 -VALUE Option-Request Failover-Start-Time-Of-State 133 -VALUE Option-Request Failover-State-Expiration-Time 134 - ATTRIBUTE Preference 7 uint8 ATTRIBUTE Elapsed-Time 8 uint16 ATTRIBUTE Relay-Message 9 octets diff --git a/src/protocols/dhcpv6/base.c b/src/protocols/dhcpv6/base.c index 1bfaa1e6429..0a43c9cd2dc 100644 --- a/src/protocols/dhcpv6/base.c +++ b/src/protocols/dhcpv6/base.c @@ -49,11 +49,14 @@ fr_dict_autoload_t libfreeradius_dhcpv6_dict[] = { static fr_dict_attr_t const *attr_packet_type; static fr_dict_attr_t const *attr_transaction_id; +static fr_dict_attr_t const *attr_option_request; + extern fr_dict_attr_autoload_t libfreeradius_dhcpv6_dict_attr[]; fr_dict_attr_autoload_t libfreeradius_dhcpv6_dict_attr[] = { { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_dhcpv6 }, { .out = &attr_transaction_id, .name = "Transaction-Id", .type = FR_TYPE_UINT32, .dict = &dict_dhcpv6 }, + { .out = &attr_option_request, .name = "Option-Request", .type = FR_TYPE_UINT16, .dict = &dict_dhcpv6 }, { NULL } }; @@ -440,6 +443,9 @@ ssize_t fr_dhcpv6_decode(TALLOC_CTX *ctx, uint8_t const *packet, size_t packet_l int fr_dhcpv6_global_init(void) { + fr_dict_attr_t const *child; + fr_value_box_t value = { .type = FR_TYPE_UINT16 }; + if (instance_count > 0) { instance_count++; return 0; @@ -451,6 +457,20 @@ int fr_dhcpv6_global_init(void) return -1; } + /* + * Fixup dictionary entry for DHCP-Paramter-Request-List adding all the options + */ + child = NULL; + while ((child = fr_dict_attr_iterate_children(fr_dict_root(dict_dhcpv6), &child)) != NULL) { + if (child->attr > 65535) continue; + + value.vb_uint16 = child->attr; + + if (fr_dict_enum_add_alias(attr_option_request, child->name, &value, true, false) < 0) { + return -1; + } + } + instance_count++; return 0;