}
}
+\"trust-anchor\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::LEASE_DATABASE:
+ case isc::dhcp::Parser4Context::HOSTS_DATABASE:
+ case isc::dhcp::Parser4Context::CONFIG_DATABASE:
+ return isc::dhcp::Dhcp4Parser::make_TRUST_ANCHOR(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("trust-anchor", driver.loc_);
+ }
+}
+
+\"cert-file\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::LEASE_DATABASE:
+ case isc::dhcp::Parser4Context::HOSTS_DATABASE:
+ case isc::dhcp::Parser4Context::CONFIG_DATABASE:
+ return isc::dhcp::Dhcp4Parser::make_CERT_FILE(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("cert-file", driver.loc_);
+ }
+}
+
+\"key-file\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::LEASE_DATABASE:
+ case isc::dhcp::Parser4Context::HOSTS_DATABASE:
+ case isc::dhcp::Parser4Context::CONFIG_DATABASE:
+ return isc::dhcp::Dhcp4Parser::make_KEY_FILE(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("key-file", driver.loc_);
+ }
+}
+
+\"cipher-list\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::LEASE_DATABASE:
+ case isc::dhcp::Parser4Context::HOSTS_DATABASE:
+ case isc::dhcp::Parser4Context::CONFIG_DATABASE:
+ return isc::dhcp::Dhcp4Parser::make_CIPHER_LIST(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("cipher-list", driver.loc_);
+ }
+}
+
\"valid-lifetime\" {
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::DHCP4:
TCP_KEEPALIVE "tcp-keepalive"
TCP_NODELAY "tcp-nodelay"
MAX_ROW_ERRORS "max-row-errors"
+ TRUST_ANCHOR "trust-anchor"
+ CERT_FILE "cert-file"
+ KEY_FILE "key-file"
+ CIPHER_LIST "cipher-list"
VALID_LIFETIME "valid-lifetime"
MIN_VALID_LIFETIME "min-valid-lifetime"
| consistency
| serial_consistency
| max_row_errors
+ | trust_anchor
+ | cert_file
+ | key_file
+ | cipher_list
| unknown_map_entry
;
ctx.stack_.back()->set("max-row-errors", n);
};
+trust_anchor: TRUST_ANCHOR {
+ ctx.unique("trust-anchor", ctx.loc2pos(@1));
+ ctx.enter(ctx.NO_KEYWORDS);
+} COLON STRING {
+ ElementPtr ca(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("trust-anchor", ca);
+ ctx.leave();
+};
+
+cert_file: CERT_FILE {
+ ctx.unique("cert-file", ctx.loc2pos(@1));
+ ctx.enter(ctx.NO_KEYWORDS);
+} COLON STRING {
+ ElementPtr cert(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("cert-file", cert);
+ ctx.leave();
+};
+
+key_file: KEY_FILE {
+ ctx.unique("key-file", ctx.loc2pos(@1));
+ ctx.enter(ctx.NO_KEYWORDS);
+} COLON STRING {
+ ElementPtr key(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("key-file", key);
+ ctx.leave();
+};
+
+cipher_list: CIPHER_LIST {
+ ctx.unique("cipher-list", ctx.loc2pos(@1));
+ ctx.enter(ctx.NO_KEYWORDS);
+} COLON STRING {
+ ElementPtr cl(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("cipher-list", cl);
+ ctx.leave();
+};
host_reservation_identifiers: HOST_RESERVATION_IDENTIFIERS {
ctx.unique("host-reservation-identifiers", ctx.loc2pos(@1));
}
}
+\"trust-anchor\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::LEASE_DATABASE:
+ case isc::dhcp::Parser4Context::HOSTS_DATABASE:
+ case isc::dhcp::Parser4Context::CONFIG_DATABASE:
+ return isc::dhcp::Dhcp4Parser::make_TRUST_ANCHOR(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("trust-anchor", driver.loc_);
+ }
+}
+
+\"cert-file\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser6Context::LEASE_DATABASE:
+ case isc::dhcp::Parser6Context::HOSTS_DATABASE:
+ case isc::dhcp::Parser6Context::CONFIG_DATABASE:
+ return isc::dhcp::Dhcp6Parser::make_CERT_FILE(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp6Parser::make_STRING("cert-file", driver.loc_);
+ }
+}
+
+\"key-file\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser6Context::LEASE_DATABASE:
+ case isc::dhcp::Parser6Context::HOSTS_DATABASE:
+ case isc::dhcp::Parser6Context::CONFIG_DATABASE:
+ return isc::dhcp::Dhcp6Parser::make_KEY_FILE(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp6Parser::make_STRING("key-file", driver.loc_);
+ }
+}
+
+\"cipher-list\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser6Context::LEASE_DATABASE:
+ case isc::dhcp::Parser6Context::HOSTS_DATABASE:
+ case isc::dhcp::Parser6Context::CONFIG_DATABASE:
+ return isc::dhcp::Dhcp6Parser::make_CIPHER_LIST(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp6Parser::make_STRING("cipher-list", driver.loc_);
+ }
+}
+
\"preferred-lifetime\" {
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::DHCP6:
TCP_KEEPALIVE "tcp-keepalive"
TCP_NODELAY "tcp-nodelay"
MAX_ROW_ERRORS "max-row-errors"
+ TRUST_ANCHOR "trust-anchor"
+ CERT_FILE "cert-file"
+ KEY_FILE "key-file"
+ CIPHER_LIST "cipher-list"
PREFERRED_LIFETIME "preferred-lifetime"
MIN_PREFERRED_LIFETIME "min-preferred-lifetime"
| consistency
| serial_consistency
| max_row_errors
+ | trust_anchor
+ | cert_file
+ | key_file
+ | cipher_list
| unknown_map_entry
;
ctx.leave();
};
+trust_anchor: TRUST_ANCHOR {
+ ctx.unique("trust-anchor", ctx.loc2pos(@1));
+ ctx.enter(ctx.NO_KEYWORDS);
+} COLON STRING {
+ ElementPtr ca(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("trust-anchor", ca);
+ ctx.leave();
+};
+
+cert_file: CERT_FILE {
+ ctx.unique("cert-file", ctx.loc2pos(@1));
+ ctx.enter(ctx.NO_KEYWORDS);
+} COLON STRING {
+ ElementPtr cert(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("cert-file", cert);
+ ctx.leave();
+};
+
+key_file: KEY_FILE {
+ ctx.unique("key-file", ctx.loc2pos(@1));
+ ctx.enter(ctx.NO_KEYWORDS);
+} COLON STRING {
+ ElementPtr key(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("key-file", key);
+ ctx.leave();
+};
+
+cipher_list: CIPHER_LIST {
+ ctx.unique("cipher-list", ctx.loc2pos(@1));
+ ctx.enter(ctx.NO_KEYWORDS);
+} COLON STRING {
+ ElementPtr cl(new StringElement($4, ctx.loc2pos(@4)));
+ ctx.stack_.back()->set("cipher-list", cl);
+ ctx.leave();
+};
+
sanity_checks: SANITY_CHECKS {
ctx.unique("sanity-checks", ctx.loc2pos(@1));
ElementPtr m(new MapElement(ctx.loc2pos(@1)));