}
}
+\"known-clients\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::POOLS:
+ return isc::dhcp::Dhcp4Parser::make_KNOWN_CLIENTS(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("known-clients", driver.loc_);
+}
+
+\"only\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::KNOWN_CLIENTS:
+ return isc::dhcp::Dhcp4Parser::make_ONLY(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("only", driver.loc_);
+}
+
+\"never\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser4Context::KNOWN_CLIENTS:
+ case isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME:
+ return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp4Parser::make_STRING("never", driver.loc_);
+}
+
\"subnet\" {
switch(driver.ctx_) {
case isc::dhcp::Parser4Context::SUBNET4:
POOLS "pools"
POOL "pool"
USER_CONTEXT "user-context"
+ KNOWN_CLIENTS "known-clients"
+ ONLY "only"
+ NEVER "never"
SUBNET "subnet"
INTERFACE "interface"
TCP "tcp"
JSON "JSON"
WHEN_PRESENT "when-present"
- NEVER "never"
ALWAYS "always"
WHEN_NOT_PRESENT "when-not-present"
| option_data_list
| client_class
| user_context
+ | known_clients
| unknown_map_entry
;
ctx.leave();
};
+known_clients: KNOWN_CLIENTS {
+ ctx.enter(ctx.KNOWN_CLIENTS);
+} COLON known_clients_value {
+ ctx.stack_.back()->set("known-clients", $4);
+ ctx.leave();
+}
+
+known_clients_value:
+ ONLY { $$ = ElementPtr(new StringElement("only", ctx.loc2pos(@1))); }
+ | NEVER { $$ = ElementPtr(new StringElement("never", ctx.loc2pos(@1))); }
+;
+
// --- end of pools definition -------------------------------
// --- reservations ------------------------------------------
return ("control-socket");
case POOLS:
return ("pools");
+ case KNOWN_CLIENTS:
+ return ("known-clients");
case RESERVATIONS:
return ("reservations");
case RELAY:
/// Used while parsing Dhcp4/subnet4/pools structures.
POOLS,
+ /// Used while parsing Dhcp4/subnet4/pools/known_client structures.
+ KNOWN_CLIENTS,
+
/// Used while parsing Dhcp4/reservations structures.
RESERVATIONS,
return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
}
+\"never\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser6Context::KNOWN_CLIENTS:
+ case isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME:
+ return isc::dhcp::Dhcp6Parser::make_NEVER(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp6Parser::make_STRING("never", driver.loc_);
+}
+
(?i:\"never\") {
/* dhcp-ddns value keywords are case insensitive */
if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
}
}
+\"known-clients\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser6Context::POOLS:
+ return isc::dhcp::Dhcp6Parser::make_KNOWN_CLIENTS(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp6Parser::make_STRING("known-clients", driver.loc_);
+}
+
+\"only\" {
+ switch(driver.ctx_) {
+ case isc::dhcp::Parser6Context::KNOWN_CLIENTS:
+ return isc::dhcp::Dhcp6Parser::make_ONLY(driver.loc_);
+ default:
+ return isc::dhcp::Dhcp6Parser::make_STRING("only", driver.loc_);
+}
+
\"subnet\" {
switch(driver.ctx_) {
case isc::dhcp::Parser6Context::SUBNET6:
EXCLUDED_PREFIX_LEN "excluded-prefix-len"
DELEGATED_LEN "delegated-len"
USER_CONTEXT "user-context"
+ KNOWN_CLIENTS "known-clients"
+ ONLY "only"
+ NEVER "never"
SUBNET "subnet"
INTERFACE "interface"
TCP "TCP"
JSON "JSON"
WHEN_PRESENT "when-present"
- NEVER "never"
ALWAYS "always"
WHEN_NOT_PRESENT "when-not-present"
| option_data_list
| client_class
| user_context
+ | known_clients
| unknown_map_entry
;
ctx.leave();
};
+known_clients: KNOWN_CLIENTS {
+ ctx.enter(ctx.KNOWN_CLIENTS);
+} COLON known_clients_value {
+ ctx.stack_.back()->set("known-clients", $4);
+ ctx.leave();
+}
+
+known_clients_value:
+ ONLY { $$ = ElementPtr(new StringElement("only", ctx.loc2pos(@1))); }
+ | NEVER { $$ = ElementPtr(new StringElement("never", ctx.loc2pos(@1))); }
+;
+
// --- end of pools definition -------------------------------
// --- pd-pools ----------------------------------------------
| excluded_prefix
| excluded_prefix_len
| user_context
+ | known_clients
| unknown_map_entry
;
return ("pools");
case PD_POOLS:
return ("pd-pools");
+ case KNOWN_CLIENTS:
+ return ("known-clients");
case RESERVATIONS:
return ("reservations");
case RELAY:
/// Used while parsing Dhcp6/subnet6/pd-pools structures.
PD_POOLS,
+ /// Used while parsing Dhcp4/subnet6/pools/known_client structures.
+ KNOWN_CLIENTS,
+
/// Used while parsing Dhcp6/reservations structures.
RESERVATIONS,