}
}
-bool
-Dhcpv6Srv::earlyGHRLookup(const Pkt6Ptr& query,
- AllocEngine::ClientContext6& ctx) {
+void
+Dhcpv6Srv::initContext0(const Pkt6Ptr& query,
+ AllocEngine::ClientContext6& ctx) {
// Pointer to client's query.
ctx.query_ = query;
// Hardware address.
ctx.hwaddr_ = getMAC(query);
+}
+
+bool
+Dhcpv6Srv::earlyGHRLookup(const Pkt6Ptr& query,
+ AllocEngine::ClientContext6& ctx) {
+ // First part of context initialization.
+ initContext0(query, ctx);
// Get the early-global-reservations-lookup flag value.
data::ConstElementPtr egrl = CfgMgr::instance().getCurrentCfg()->
}
void
-Dhcpv6Srv::initContext(const Subnet6Ptr& subnet,
- const Pkt6Ptr& pkt,
- AllocEngine::ClientContext6& ctx,
- bool& drop) {
- ctx.subnet_ = subnet;
+Dhcpv6Srv::initContext(AllocEngine::ClientContext6& ctx, bool& drop) {
+ // Sanity check.
+ if (!ctx.query_) {
+ drop = true;
+ return;
+ }
ctx.fwd_dns_update_ = false;
ctx.rev_dns_update_ = false;
ctx.hostname_ = "";
- ctx.callout_handle_ = getCalloutHandle(pkt);
+ ctx.callout_handle_ = getCalloutHandle(ctx.query_);
// Collect host identifiers if host reservations enabled. The identifiers
// are stored in order of preference. The server will use them in that
// a result, the first_class set via the host reservation will
// replace the second_class because the second_class will this
// time evaluate to false as desired.
- removeDependentEvaluatedClasses(pkt);
- setReservedClientClasses(pkt, ctx);
- evaluateClasses(pkt, false);
+ removeDependentEvaluatedClasses(ctx.query_);
+ setReservedClientClasses(ctx.query_, ctx);
+ evaluateClasses(ctx.query_, false);
}
// Set KNOWN builtin class if something was found, UNKNOWN if not.
if (!ctx.hosts_.empty()) {
- pkt->addClass("KNOWN");
+ ctx.query_->addClass("KNOWN");
LOG_DEBUG(dhcp6_logger, DBG_DHCP6_BASIC, DHCP6_CLASS_ASSIGNED)
- .arg(pkt->getLabel())
+ .arg(ctx.query_->getLabel())
.arg("KNOWN");
} else {
- pkt->addClass("UNKNOWN");
+ ctx.query_->addClass("UNKNOWN");
LOG_DEBUG(dhcp6_logger, DBG_DHCP6_BASIC, DHCP6_CLASS_ASSIGNED)
- .arg(pkt->getLabel())
+ .arg(ctx.query_->getLabel())
.arg("UNKNOWN");
}
// Perform second pass of classification.
- evaluateClasses(pkt, true);
+ evaluateClasses(ctx.query_, true);
- const ClientClasses& classes = pkt->getClasses();
+ const ClientClasses& classes = ctx.query_->getClasses();
LOG_DEBUG(dhcp6_logger, DBG_DHCP6_BASIC, DHCP6_CLASSES_ASSIGNED_AFTER_SUBNET_SELECTION)
- .arg(pkt->getLabel())
+ .arg(ctx.query_->getLabel())
.arg(classes.toText());
// Check the DROP special class.
- if (pkt->inClass("DROP")) {
+ if (ctx.query_->inClass("DROP")) {
LOG_DEBUG(packet6_logger, DBGLVL_PKT_HANDLING, DHCP6_PACKET_DROP_DROP_CLASS2)
- .arg(pkt->makeLabel(pkt->getClientId(), nullptr))
- .arg(pkt->toText());
+ .arg(ctx.query_->makeLabel(ctx.query_->getClientId(), 0))
+ .arg(ctx.query_->toText());
StatsMgr::instance().addValue("pkt6-receive-drop",
static_cast<int64_t>(1));
drop = true;
// Complete the client context initialization.
bool drop = false;
- Subnet6Ptr subnet = selectSubnet(query, drop);
+ ctx.subnet_ = selectSubnet(query, drop);
if (drop) {
// Caller will immediately drop the packet so simply return now.
return (Pkt6Ptr());
}
- // Park point here.
+ return (processLocalizedQuery6(ctx));
+}
+
+void
+Dhcpv6Srv::processLocalizedQuery6AndSendResponse(Pkt6Ptr query,
+ AllocEngine::ClientContext6& ctx) {
+ try {
+ Pkt6Ptr rsp = processLocalizedQuery6(ctx);
+ if (!rsp) {
+ return;
+ }
+
+ CalloutHandlePtr callout_handle = getCalloutHandle(query);
+ processPacketBufferSend(callout_handle, rsp);
+ } catch (const std::exception& e) {
+ LOG_ERROR(packet6_logger, DHCP6_PACKET_PROCESS_STD_EXCEPTION)
+ .arg(e.what());
+ } catch (...) {
+ LOG_ERROR(packet6_logger, DHCP6_PACKET_PROCESS_EXCEPTION);
+ }
+}
- initContext(subnet, query, ctx, drop);
+Pkt6Ptr
+Dhcpv6Srv::processLocalizedQuery6(AllocEngine::ClientContext6& ctx) {
+ Pkt6Ptr query = ctx.query_;
+ bool drop = false;
+ initContext(ctx, drop);
// Stop here if initContext decided to drop the packet.
if (drop) {
return (Pkt6Ptr());
/// @brief Process a single incoming DHCPv6 packet.
///
- /// It verifies correctness of the passed packet, calls per-type processXXX
- /// methods, generates appropriate answer.
+ /// It verifies correctness of the passed packet, localizes it,
+ /// calls per-type processXXX methods, generates appropriate answer.
///
/// @param query A pointer to the packet to be processed.
/// @return A pointer to the response.
/// @brief Process a single incoming DHCPv6 query.
///
- /// It calls per-type processXXX methods, generates appropriate answer.
+ /// It localizes the query, calls per-type processXXX methods,
+ /// generates appropriate answer.
///
/// @param query A pointer to the packet to be processed.
/// @return A pointer to the response.
/// @brief Process a single incoming DHCPv6 query.
///
+ /// It localizes the query, calls per-type processXXX methods,
+ /// generates appropriate answer, sends the answer to the client.
+ ///
+ /// @param query A pointer to the packet to be processed.
+ void processDhcp6QueryAndSendResponse(Pkt6Ptr query);
+
+ /// @brief Process a localized incoming DHCPv6 query.
+ ///
+ /// It calls per-type processXXX methods, generates appropriate answer.
+ ///
+ /// @param ctx Pointer to The client context.
+ /// @return A pointer to the response.
+ Pkt6Ptr processLocalizedQuery6(AllocEngine::ClientContext6& ctx);
+
+ /// @brief Process a localized incoming DHCPv6 query.
+ ///
/// It calls per-type processXXX methods, generates appropriate answer,
/// sends the answer to the client.
///
/// @param query A pointer to the packet to be processed.
- void processDhcp6QueryAndSendResponse(Pkt6Ptr query);
+ /// @param ctx Pointer to The client context.
+ void processLocalizedQuery6AndSendResponse(Pkt6Ptr query,
+ AllocEngine::ClientContext6& ctx);
/// @brief Instructs the server to shut down.
void shutdown() override;
/// Called during reconfigure and shutdown.
void discardPackets();
+ /// @brief Initialize client context (first part).
+ ///
+ /// @param query The query message.
+ /// @param ctx Reference to client context.
+ void initContext0(const Pkt6Ptr& query,
+ AllocEngine::ClientContext6& ctx);
+
/// @brief Initialize client context and perform early global
/// reservations lookup.
///
/// the Rapid Commit option was included and that the server respects
/// it.
///
- /// @param subnet Selected subnet.
- /// @param pkt pointer to a packet for which context will be created.
/// @param [out] ctx reference to context object to be initialized.
/// @param [out] drop if it is true the packet will be dropped.
- void initContext(const Subnet6Ptr& subnet,
- const Pkt6Ptr& pkt,
- AllocEngine::ClientContext6& ctx,
- bool& drop);
+ void initContext(AllocEngine::ClientContext6& ctx, bool& drop);
/// @brief this is a prefix added to the content of vendor-class option
///
AllocEngine::ClientContext6 ctx1;
bool drop = !srv.earlyGHRLookup(query1, ctx1);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(query1, drop);
+ ctx1.subnet_ = srv_.selectSubnet(query1, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query1, ctx1, drop);
+ srv.initContext(ctx1, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response1 = srv.processSolicit(ctx1);
AllocEngine::ClientContext6 ctx2;
drop = !srv.earlyGHRLookup(query2, ctx2);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(query2, drop);
+ ctx2.subnet_ = srv_.selectSubnet(query2, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query2, ctx2, drop);
+ srv.initContext(ctx2, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response2 = srv.processSolicit(ctx2);
AllocEngine::ClientContext6 ctx3;
drop = !srv.earlyGHRLookup(query3, ctx3);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(query3, drop);
+ ctx3.subnet_ = srv_.selectSubnet(query3, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query3, ctx3, drop);
+ srv.initContext(ctx3, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response3 = srv.processSolicit(ctx3);
AllocEngine::ClientContext6 ctx1;
bool drop = !srv.earlyGHRLookup(query1, ctx1);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(query1, drop);
+ ctx1.subnet_ = srv_.selectSubnet(query1, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query1, ctx1, drop);
+ srv.initContext(ctx1, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response1 = srv.processSolicit(ctx1);
AllocEngine::ClientContext6 ctx2;
drop = !srv.earlyGHRLookup(query2, ctx2);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(query2, drop);
+ ctx2.subnet_ = srv_.selectSubnet(query2, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query2, ctx2, drop);
+ srv.initContext(ctx2, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response2 = srv.processSolicit(ctx2);
AllocEngine::ClientContext6 ctx3;
drop = !srv.earlyGHRLookup(query3, ctx3);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(query3, drop);
+ ctx3.subnet_ = srv_.selectSubnet(query3, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query3, ctx3, drop);
+ srv.initContext(ctx3, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response3 = srv.processSolicit(ctx3);
AllocEngine::ClientContext6 ctx1;
bool drop = !srv.earlyGHRLookup(query1, ctx1);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(query1, drop);
+ ctx1.subnet_ = srv_.selectSubnet(query1, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query1, ctx1, drop);
+ srv.initContext(ctx1, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response1 = srv.processSolicit(ctx1);
AllocEngine::ClientContext6 ctx2;
drop = !srv.earlyGHRLookup(query2, ctx2);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(query2, drop);
+ ctx2.subnet_ = srv_.selectSubnet(query2, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query2, ctx2, drop);
+ srv.initContext(ctx2, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response2 = srv.processSolicit(ctx2);
AllocEngine::ClientContext6 ctx3;
drop = !srv.earlyGHRLookup(query3, ctx3);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(query3, drop);
+ ctx3.subnet_ = srv_.selectSubnet(query3, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query3, ctx3, drop);
+ srv.initContext(ctx3, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response3 = srv.processSolicit(ctx3);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(query, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(query, drop);
+ ctx.subnet_ = srv_.selectSubnet(query, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(query, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(query, drop);
+ ctx.subnet_ = srv_.selectSubnet(query, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(query, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(query, drop);
+ ctx.subnet_ = srv_.selectSubnet(query, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(query, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(query, drop);
+ ctx.subnet_ = srv_.selectSubnet(query, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(query, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(query, drop);
+ ctx.subnet_ = srv_.selectSubnet(query, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx1;
bool drop = !srv.earlyGHRLookup(query1, ctx1);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(query1, drop);
+ ctx1.subnet_ = srv_.selectSubnet(query1, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query1, ctx1, drop);
+ srv.initContext(ctx1, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response1 = srv.processSolicit(ctx1);
ASSERT_TRUE(response1);
AllocEngine::ClientContext6 ctx2;
drop = !srv.earlyGHRLookup(query2, ctx2);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(query2, drop);
+ ctx2.subnet_ = srv_.selectSubnet(query2, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query2, ctx2, drop);
+ srv.initContext(ctx2, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response2 = srv.processSolicit(ctx2);
ASSERT_TRUE(response2);
AllocEngine::ClientContext6 ctx3;
drop = !srv.earlyGHRLookup(query3, ctx3);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(query3, drop);
+ ctx3.subnet_ = srv_.selectSubnet(query3, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query3, ctx3, drop);
+ srv.initContext(ctx3, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response3 = srv.processSolicit(ctx3);
ASSERT_TRUE(response3);
AllocEngine::ClientContext6 ctx1;
bool drop = !srv.earlyGHRLookup(query1, ctx1);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(query1, drop);
+ ctx1.subnet_ = srv_.selectSubnet(query1, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query1, ctx1, drop);
+ srv.initContext(ctx1, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response1 = srv.processSolicit(ctx1);
ASSERT_TRUE(response1);
AllocEngine::ClientContext6 ctx2;
drop = !srv.earlyGHRLookup(query2, ctx2);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(query2, drop);
+ ctx2.subnet_ = srv_.selectSubnet(query2, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query2, ctx2, drop);
+ srv.initContext(ctx2, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response2 = srv.processSolicit(ctx2);
ASSERT_TRUE(response2);
AllocEngine::ClientContext6 ctx1;
bool drop = !srv.earlyGHRLookup(query1, ctx1);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(query1, drop);
+ ctx1.subnet_ = srv_.selectSubnet(query1, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query1, ctx1, drop);
+ srv.initContext(ctx1, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response1 = srv.processSolicit(ctx1);
AllocEngine::ClientContext6 ctx2;
drop = !srv.earlyGHRLookup(query2, ctx2);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(query2, drop);
+ ctx2.subnet_ = srv_.selectSubnet(query2, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query2, ctx2, drop);
+ srv.initContext(ctx2, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response2 = srv.processSolicit(ctx2);
AllocEngine::ClientContext6 ctx3;
drop = !srv.earlyGHRLookup(query3, ctx3);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(query3, drop);
+ ctx3.subnet_ = srv_.selectSubnet(query3, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, query3, ctx3, drop);
+ srv.initContext(ctx3, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response3 = srv.processSolicit(ctx3);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol, drop);
+ ctx.subnet_ = srv.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv_.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(sol, drop);
+ ctx.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx, drop);
+ srv_.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr adv = srv_.processSolicit(ctx);
AllocEngine::ClientContext6 ctx2;
drop = !srv_.earlyGHRLookup(sol, ctx2);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(sol, drop);
+ ctx2.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx2, drop);
+ srv_.initContext(ctx2, drop);
ASSERT_FALSE(drop);
adv = srv_.processSolicit(ctx2);
ASSERT_TRUE(adv);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol, drop);
+ ctx.subnet_ = srv.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol, drop);
+ ctx.subnet_ = srv.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol, drop);
+ ctx.subnet_ = srv.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol, drop);
+ ctx.subnet_ = srv.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol, drop);
+ ctx.subnet_ = srv.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol, drop);
+ ctx.subnet_ = srv.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol, drop);
+ ctx.subnet_ = srv.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol, drop);
+ ctx.subnet_ = srv.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol, drop);
+ ctx.subnet_ = srv.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx1;
bool drop = !srv.earlyGHRLookup(sol1, ctx1);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol1, drop);
+ ctx1.subnet_ = srv.selectSubnet(sol1, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol1, ctx1, drop);
+ srv.initContext(ctx1, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply1 = srv.processSolicit(ctx1);
AllocEngine::ClientContext6 ctx2;
drop = !srv.earlyGHRLookup(sol2, ctx2);
ASSERT_FALSE(drop);
- subnet = srv.selectSubnet(sol2, drop);
+ ctx2.subnet_ = srv.selectSubnet(sol2, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol2, ctx2, drop);
+ srv.initContext(ctx2, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply2 = srv.processSolicit(ctx2);
AllocEngine::ClientContext6 ctx3;
drop = !srv.earlyGHRLookup(sol3, ctx3);
ASSERT_FALSE(drop);
- subnet = srv.selectSubnet(sol3, drop);
+ ctx3.subnet_ = srv.selectSubnet(sol3, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol3, ctx3, drop);
+ srv.initContext(ctx3, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply3 = srv.processSolicit(ctx3);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol, drop);
+ ctx.subnet_ = srv.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol, drop);
+ ctx.subnet_ = srv.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(req, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(req, drop);
+ ctx.subnet_ = srv.selectSubnet(req, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, req, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processRequest(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(req, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(req, drop);
+ ctx.subnet_ = srv.selectSubnet(req, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, req, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processRequest(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(req, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(req, drop);
+ ctx.subnet_ = srv.selectSubnet(req, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, req, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processRenew(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(req, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(req, drop);
+ ctx.subnet_ = srv.selectSubnet(req, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, req, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processRenew(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv_.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(sol, drop);
+ ctx.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx, drop);
+ srv_.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response = srv_.processSolicit(ctx);
AllocEngine::ClientContext6 ctx2;
drop = !srv_.earlyGHRLookup(sol, ctx2);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(sol, drop);
+ ctx2.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx2, drop);
+ srv_.initContext(ctx2, drop);
ASSERT_FALSE(drop);
response = srv_.processSolicit(ctx2);
AllocEngine::ClientContext6 ctx3;
drop = !srv_.earlyGHRLookup(sol, ctx3);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(sol, drop);
+ ctx3.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx3, drop);
+ srv_.initContext(ctx3, drop);
ASSERT_FALSE(drop);
response = srv_.processSolicit(ctx3);
AllocEngine::ClientContext6 ctx;
bool drop = !srv_.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(sol, drop);
+ ctx.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx, drop);
+ srv_.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr response = srv_.processSolicit(ctx);
AllocEngine::ClientContext6 ctx2;
drop = !srv_.earlyGHRLookup(sol, ctx2);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(sol, drop);
+ ctx2.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx2, drop);
+ srv_.initContext(ctx2, drop);
ASSERT_FALSE(drop);
response = srv_.processSolicit(ctx2);
AllocEngine::ClientContext6 ctx3;
drop = !srv_.earlyGHRLookup(sol, ctx3);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(sol, drop);
+ ctx3.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx3, drop);
+ srv_.initContext(ctx3, drop);
ASSERT_FALSE(drop);
response = srv_.processSolicit(ctx3);
AllocEngine::ClientContext6 ctx;
bool drop = !srv.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv.selectSubnet(sol, drop);
+ ctx.subnet_ = srv.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv.initContext(subnet, sol, ctx, drop);
+ srv.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr reply = srv.processSolicit(ctx);
if (drop) {
return (Pkt6Ptr());
}
- Subnet6Ptr subnet = selectSubnet(solicit, drop);
+ ctx.subnet_ = selectSubnet(solicit, drop);
if (drop) {
return (Pkt6Ptr());
}
- initContext(subnet, solicit, ctx, drop);
+ initContext(ctx, drop);
if (drop) {
return (Pkt6Ptr());
}
if (drop) {
return (Pkt6Ptr());
}
- Subnet6Ptr subnet = selectSubnet(request, drop);
+ ctx.subnet_ = selectSubnet(request, drop);
if (drop) {
return (Pkt6Ptr());
}
- initContext(subnet, request, ctx, drop);
+ initContext(ctx, drop);
if (drop) {
return (Pkt6Ptr());
}
if (drop) {
return (Pkt6Ptr());
}
- Subnet6Ptr subnet = selectSubnet(renew, drop);
+ ctx.subnet_ = selectSubnet(renew, drop);
if (drop) {
return (Pkt6Ptr());
}
- initContext(subnet, renew, ctx, drop);
+ initContext(ctx, drop);
if (drop) {
return (Pkt6Ptr());
}
if (drop) {
return (Pkt6Ptr());
}
- Subnet6Ptr subnet = selectSubnet(rebind, drop);
+ ctx.subnet_ = selectSubnet(rebind, drop);
if (drop) {
return (Pkt6Ptr());
}
- initContext(subnet, rebind, ctx, drop);
+ initContext(ctx, drop);
if (drop) {
return (Pkt6Ptr());
}
if (drop) {
return (Pkt6Ptr());
}
- Subnet6Ptr subnet = selectSubnet(release, drop);
+ ctx.subnet_ = selectSubnet(release, drop);
if (drop) {
return (Pkt6Ptr());
}
- initContext(subnet, release, ctx, drop);
+ initContext(ctx, drop);
if (drop) {
return (Pkt6Ptr());
}
if (drop) {
return (Pkt6Ptr());
}
- Subnet6Ptr subnet = selectSubnet(decline, drop);
+ ctx.subnet_ = selectSubnet(decline, drop);
if (drop) {
return (Pkt6Ptr());
}
- initContext(subnet, decline, ctx, drop);
+ initContext(ctx, drop);
if (drop) {
return (Pkt6Ptr());
}
AllocEngine::ClientContext6 ctx;
bool drop = !srv_->earlyGHRLookup(query, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_->selectSubnet(query, drop);
+ ctx.subnet_ = srv_->selectSubnet(query, drop);
ASSERT_FALSE(drop);
- srv_->initContext(subnet, query, ctx, drop);
+ srv_->initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr answer = generateMessageWithIds(DHCPV6_ADVERTISE);
AllocEngine::ClientContext6 ctx;
bool drop = !srv_->earlyGHRLookup(req, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_->selectSubnet(req, drop);
+ ctx.subnet_ = srv_->selectSubnet(req, drop);
ASSERT_FALSE(drop);
- srv_->initContext(subnet, req, ctx, drop);
+ srv_->initContext(ctx, drop);
ASSERT_FALSE(drop);
if (msg_type == DHCPV6_SOLICIT) {
AllocEngine::ClientContext6 ctx;
bool drop = !srv_->earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_->selectSubnet(sol, drop);
+ ctx.subnet_ = srv_->selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_->initContext(subnet, sol, ctx, drop);
+ srv_->initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr adv = srv_->processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv_->earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_->selectSubnet(sol, drop);
+ ctx.subnet_ = srv_->selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_->initContext(subnet, sol, ctx, drop);
+ srv_->initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr adv = srv_->processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv_->earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_->selectSubnet(sol, drop);
+ ctx.subnet_ = srv_->selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_->initContext(subnet, sol, ctx, drop);
+ srv_->initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr adv = srv_->processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv_->earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_->selectSubnet(sol, drop);
+ ctx.subnet_ = srv_->selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_->initContext(subnet, sol, ctx, drop);
+ srv_->initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr adv = srv_->processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv_.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(sol, drop);
+ ctx.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx, drop);
+ srv_.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr adv = srv_.processSolicit(ctx);
AllocEngine::ClientContext6 ctx2;
drop = !srv_.earlyGHRLookup(sol, ctx2);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(sol, drop);
+ ctx2.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx2, drop);
+ srv_.initContext(ctx2, drop);
ASSERT_FALSE(drop);
adv = srv_.processSolicit(ctx2);
ASSERT_TRUE(adv);
AllocEngine::ClientContext6 ctx;
bool drop = !srv_.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(sol, drop);
+ ctx.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx, drop);
+ srv_.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr adv = srv_.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv_.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(sol, drop);
+ ctx.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx, drop);
+ srv_.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr adv = srv_.processSolicit(ctx);
AllocEngine::ClientContext6 ctx;
bool drop = !srv_.earlyGHRLookup(sol, ctx);
ASSERT_FALSE(drop);
- Subnet6Ptr subnet = srv_.selectSubnet(sol, drop);
+ ctx.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx, drop);
+ srv_.initContext(ctx, drop);
ASSERT_FALSE(drop);
Pkt6Ptr adv = srv_.processSolicit(ctx);
AllocEngine::ClientContext6 ctx3;
drop = !srv_.earlyGHRLookup(sol, ctx3);
ASSERT_FALSE(drop);
- subnet = srv_.selectSubnet(sol, drop);
+ ctx3.subnet_ = srv_.selectSubnet(sol, drop);
ASSERT_FALSE(drop);
- srv_.initContext(subnet, sol, ctx3, drop);
+ srv_.initContext(ctx3, drop);
ASSERT_FALSE(drop);
adv = srv_.processSolicit(ctx3);
ASSERT_TRUE(adv);