From: Francis Dupont Date: Mon, 29 Nov 2021 13:35:33 +0000 (+0100) Subject: [#34] Checkpoint: updated syntax X-Git-Tag: Kea-2.1.2~161 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6bc960586fc84e01d1674cfbef645537c3d21131;p=thirdparty%2Fkea.git [#34] Checkpoint: updated syntax --- diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index 746f493472..2eab7c48a9 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -629,6 +629,50 @@ ControlCharacterFill [^"\\]|\\["\\/bfnrtu] } } +\"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: diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy index 8e6082f4cb..35f96e6a15 100644 --- a/src/bin/dhcp4/dhcp4_parser.yy +++ b/src/bin/dhcp4/dhcp4_parser.yy @@ -105,6 +105,10 @@ using namespace std; 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" @@ -964,6 +968,10 @@ database_map_param: database_type | consistency | serial_consistency | max_row_errors + | trust_anchor + | cert_file + | key_file + | cipher_list | unknown_map_entry ; @@ -1132,6 +1140,41 @@ max_row_errors: MAX_ROW_ERRORS COLON INTEGER { 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)); diff --git a/src/bin/dhcp6/dhcp6_lexer.ll b/src/bin/dhcp6/dhcp6_lexer.ll index c1f9ef2356..d5863dc394 100644 --- a/src/bin/dhcp6/dhcp6_lexer.ll +++ b/src/bin/dhcp6/dhcp6_lexer.ll @@ -827,6 +827,50 @@ ControlCharacterFill [^"\\]|\\["\\/bfnrtu] } } +\"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: diff --git a/src/bin/dhcp6/dhcp6_parser.yy b/src/bin/dhcp6/dhcp6_parser.yy index 77a7770ad7..6bcd5d7852 100644 --- a/src/bin/dhcp6/dhcp6_parser.yy +++ b/src/bin/dhcp6/dhcp6_parser.yy @@ -90,6 +90,10 @@ using namespace std; 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" @@ -914,6 +918,10 @@ database_map_param: database_type | consistency | serial_consistency | max_row_errors + | trust_anchor + | cert_file + | key_file + | cipher_list | unknown_map_entry ; @@ -1082,6 +1090,42 @@ serial_consistency: SERIAL_CONSISTENCY { 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)));