BIND 10 #3232: Kea6: Develop REBIND support

BIND 10 Development do-not-reply at isc.org
Wed Mar 12 11:25:42 UTC 2014


#3232: Kea6: Develop REBIND support
-------------------------------------+-------------------------------------
            Reporter:  tomek         |                        Owner:
                Type:  enhancement   |  marcin
            Priority:  medium        |                       Status:
           Component:  Unclassified  |  reviewing
            Keywords:                |                    Milestone:  DHCP-
           Sensitive:  0             |  Kea0.9-alpha
         Sub-Project:  DHCP          |                   Resolution:
Estimated Difficulty:  0             |                 CVSS Scoring:
         Total Hours:  51            |              Defect Severity:  N/A
                                     |  Feature Depending on Ticket:
                                     |          Add Hours to Ticket:  1.5
                                     |                    Internal?:  0
-------------------------------------+-------------------------------------
Changes (by tomek):

 * hours:  5.5 => 1.5
 * owner:  tomek => marcin
 * totalhours:  49.5 => 51


Comment:

 Replying to [comment:8 marcin]:
 > > '''src/bin/dhcp6/tests/dhcp6_client.cc'''
 > > Dhcp6Client::applyConfiguration() the condition in line 75
 > Yes. This function became a bit ugly as a result of my attempt to not
 copy-paste too much for each processed IA. I restructured this function a
 bit and it now looks nicer.
 The new code looks good. I would prefer the other option types (default
 label) to throw exception rather than silently ignore, but I won't insist
 on it.

 > > When creating the lease later in the same function, please add a brief
 > > comment that the lease is assumed to belong to a subnet with subnet-id
 > > 0. That's a reasonable assumption for now, but it may fail once we
 > > start testing fancier scenarios with that class.
 > Sorry, I didn't get that point.
 In line 92 you pass 0 as the last argument. That value is subnet-id. 0 is
 correct value if there is only one subnet configured.
 It may be invalid if there are more subnets (so it could potentially be 1
 instead of 0).

 That's ok for now. It was just a comment.

 > > The code should eventually have a clause that removes leases if
 > > received with lifetimes set to 0. It's probably not needed for this
 > > ticket, so a simple @todo will be sufficient for now.
 > From the unit test standpoint it is good that leases with zero-lifetimes
 are not immediately removed because the unit test want to check that
 lifetimes are 0.
 Good point.

 > Perhaps there will need to be a public function that can be explicitly
 called to remove leases of this kind. This class will need to be extended
 anyway, so I am not sure we need todo for evernything?
 Nope. I hadn't thought about test reasons to keep the leases with
 lifetimes 0.

 > > '''src/bin/dhcp6/tests/dhcp6_srv_unittest.cc'''
 > > testUnicast: It's a good test, but it has a flaw. The unicast is
 > > allowed only if the server is configured to send server-unicast
 > > option. If it's not configured, it should be reject/status-code with
 > > UseMulticast for every client originated packet.
 >
 > Well, when talking about the Rebind message it must always be discarded
 if sent to a unicast and not relayed, I think:
 >
 > {{{
 >    A server MUST discard any Solicit, Confirm, Rebind or
 >    Information-request messages it receives with a unicast destination
 >    address.
 > }}}
 >
 > This is from section 15 of RFC3315.
 Uh oh. I was sure it was UseMulticast here as well. I stand corrected.

 > > REBIND_CONFIGS structure: Can you add a one-line comment for each
 > > configuration? It's a bit difficult to compare 2 configurations that
 > > are 2 screens away and pick up the subtle differences. I was thinking
 > > about something like
 > > {{{
 > > // Configuration 0: 2 subnets, address only (2001:db8:1/64,
 2001:db8:2::/64)
 > > // Configuration 1: same as 0, but different subnets
 ((2001:db8:4::/64, 2001:db8:4::/64)
 > > // Configuration 2: ...
 > > }}}
 >
 > Added. Also removed Config4 which appeared to be unused.
 Thanks.

 > > RebindTest::configure(): if you agree with my proposal for extending
 > > client constructor to accept Dhcpv6Srv pointer, you could get rid of
 > > this method and use Dhcpv6SrvTest::configure() method directly.
 > > Which is not on this branch yet, because it was branched before
 > > configure() was merged to master. So it makes my comment somewhat
 > > useless, unless you want to do master->trac3232 merge, then update
 > > then trac3232->master merge.
 > I don't want to merge that back and forth. I will remove it once I have
 a chance in another ticket.
 Sure.


 > > General comment for all tests in rebind_unittest.cc:
 > > Please add one line explanation for each test purpose.
 > Ooops. Why did I forget about it? Added.
 Thanks.

 > It is not supporting the stateful issues yet. The key change in stateful
 issues is that server may allocate leases upon Renew or Rebind, which we
 don't support here. I decided to write this up in stateful issues before
 implementing it.
 Oh well. I was hoping we could extend our list of supported RFCs and
 drafts a bit...

 You may consider adding an exception for other option types (the default
 label discussed above). No matter what your decision will be, the code
 looks ready to go.  Please merge.

-- 
Ticket URL: <http://bind10.isc.org/ticket/3232#comment:9>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list