Lines Matching +full:10 +full:base +full:- +full:t1

32 DHCPv6 Client Low-Level Design
36 This project adds DHCPv6 client-side (not server) support to
37 Solaris. Future projects may add server-side support as well as
44 - RFC 3315: the primary description of DHCPv6
45 - RFCs 2131 and 2132: IPv4 DHCP
46 - RFCs 2461 and 2462: IPv6 NDP and stateless autoconfiguration
47 - RFC 3484: IPv6 default address selection
48 - ifconfig(8): Solaris IP interface configuration
49 - in.ndpd(8): Solaris IPv6 Neighbor and Router Discovery daemon
50 - dhcpagent(8): Solaris DHCP client
51 - dhcpinfo(1): Solaris DHCP parameter utility
52 - ndpd.conf(5): in.ndpd configuration file
53 - netstat(8): Solaris network status utility
54 - snoop(8): Solaris network packet capture and inspection
55 - "DHCPv6 Client High-Level Design"
74 As a cross-reference, Appendix B has a summary of the components
81 first to talk about the current IPv4-only design, and the
96 ifsheadp -> ifslist -> ifslist -> ifslist -> NULL
106 stream is nulled-out with a filter when not in use, but still
119 The design is single-threaded, so code that walks the global list
154 Unlike IPv4 DHCP, DHCPv6 relies on link-local IP addresses to do its
165 back to the client's link-local address.
171 option, as well as two timers, called T1 (renew) and T2 (rebind),
177 addresses for the client to use and the T1/T2 timer values. Each
216 - Because Solaris uses IP logical interfaces to configure
220 - Because we need to support multiple addresses (and thus multiple
258 Next, the lease-tracking needs to be refactored. DHCPv6 is the
260 address (LIF) and IA groupings with shared T1/T2 timers. To
265 machine uses a single link-local address, a single DUID+IAID pair,
266 and supports only Non-temporary Addresses [IA_NA option]. Future
274 members) are kept on a per-state-machine basis. As this is no
285 lease structure will use a base pointer for the first LIF in the
290 of LIFs in the lease, and advance the base pointer if the LIF being
309 +- lease +- lease +- lease
315 lif ----> lif -> NULL lif -> NULL
319 v4root -> pif --------------------> pif -> NULL
334 lease ----------------> lease -> NULL lease -> NULL
340 lif --> lif --> lif --> lif --> NULL lif --> lif -> NULL
344 v6root -> pif ----------------------------------> pif -> NULL
376 This defines the usual (non-relay) DHCPv6 packet header, and is
387 highly specific to IPv4 DHCP -- they have no means to handle nested
389 DHCP_OPT structure which is specific to IPv4 DHCP -- and are
411 walk a DHCPv6 option list, and provide safe (bounds-checked) access
417 and iterates over the top-level options with a given code number.
422 always follow a structure that has type-dependent length. This
425 the type-dependent part.
437 re-adds the option. We could also just assume the presence of the
445 that existing option isn't a top-level option, though, this means
449 option to an IAADDR option within an IA_NA top-level option.
455 Instead, a single unicast-bound IP socket on a link-local address
458 bound only after DHCP reaches BOUND state -- that is, when it
467 per-ifslist if_sock_fd. This is used primarily for issuing ioctls
468 to configure interfaces -- a task that would work as well with any
469 open socket -- and is also registered to receive any ACK/NAK packets
487 to register, unregister, and re-register for packet reception while
488 changing state -- register_acknak() and unregister_acknak() are
520 Although the default is to send all client messages to a well-known
526 well-known multicast address for local DHCPv6 servers and relays)
540 step further by removing the need for any per-LIF sockets and just
542 facilitate a Solaris 10 backport, this will be done separately as CR
548 requires switching from the old BSD4.2 -lsocket -lnsl to the
549 standards-compliant -lxnet in order to use ancillary data.
564 these states map one-to-one with a single address and single lease
568 T1 or T2 timer.
572 or rebinding state, based on the T1/T2 timers for each IA, and many
581 - Transition from BOUND to RENEWING state when the first T1 timer
584 that are within REN_TIMEOUT (10 seconds) of reaching T1 as well.
587 - When a T1 lease timer expires and we're in RENEWING or REBINDING
591 - At each retransmit timeout, we should check to see if there are
592 more IAs that need to join in because they've passed point T1 as
597 - When we reach T2 on any IA and we're in BOUND or RENEWING state,
599 those other IAs that are past T1 but not yet at T2, we could
606 - When a T2 lease timer expires and we're in REBINDING state, just
607 ignore it, as with the corresponding T1 timer.
609 - As addresses reach the end of their preferred lifetimes, set the
616 discussing the renew/rebind T1/T2 timers, but treats them as a unit
658 svc:/system/filesystem/root:default ->
659 svc:/system/metainit:default ->
660 svc:/system/identity:node ->
662 svc:/network/iscsi_initiator:default ->
694 next start-up, and we'll thus lose our leases across a reboot.
715 rest of the root) is mounted on a read-only ramdisk. In this case,
720 state written out to the newly-constructed system root.
730 - they specify whether and how to run DHCPv6 on a given interface.
731 - they provide a list of the valid prefixes on an interface.
740 Nevada is now privilege-aware and runs with limited privileges,
744 A simple work-around for this issue is to rip out the "privileges="
746 direction initially, but the right longer-term answer seems to be
765 all-ones (/128) netmask by default. In.ndpd will be modified so
782 in.ndpd or dhcpagent, and instead force users through a higher-level
791 - When we are constructing an automatic, stable DUID for our own
792 identity, we prefer to use a DUID-LLT if possible. This is done
793 by finding a link-layer interface, opening it, reading the MAC
797 - When we translate a user-configured DUID from
802 - As part of the PIF data structure initialization, we need to read
807 implementation. However, that project is on-going at this time and
887 - The dsm_name field currently just points to the lif_name on the
891 - The timer mechanism will be refactored. Rather than using the
893 if_{t1,t2,lease} to hold the relative timer values, we will
908 dhcp_lif_t.lif_next linkage in per-PIF list of LIFs
909 dhcp_lif_t.lif_prev linkage in per-PIF list of LIFs
920 dhcp_lif_t.lif_iaid unique and stable 32-bit identifier
930 dhcp_lease_t.dl_next linkage in per-state-machine list of leases
931 dhcp_lease_t.dl_prev linkage in per-state-machine list of leases
949 message format for DHCPv4 and in the DUID-LL and DUID-LLT
988 - First, compare on configured prefix. The interface with the
992 - Next, check the type of address. Prefer statically configured
998 - Finally, run the check-all-bits (CommonPrefixLen) tie breaker.
1016 - List of ARPHRD_* types is a bit short; add some new ones.
1018 - List of IPPORT_* values is similarly sparse; add others in use by
1021 - dhcpmsg.h lacks PRINTFLIKE for dhcpmsg(); add it.
1023 - CR 6482163 causes excessive lint errors with libxnet; will fix.
1025 - libdhcpagent uses gettimeofday() for I/O timing, and this can
1029 - Controlling debug mode in the daemon shouldn't require changing
1031 added undocumented ".DEBUG_LEVEL=[0-3]" and ".VERBOSE=[01]"
1034 - The various attributes of the IPC commands (requires privileges,
1036 be gathered together into one look-up table rather than scattered
1037 as hard-coded tests.
1039 - Remove the event unregistration from the command dispatch loop and
1041 zero-length read any time the client goes away, and that will be
1044 side-effect.
1046 - Throughout the dhcpagent code, there are private implementations
1047 of doubly-linked and singly-linked lists for each data type.
1058 - If Renew/Rebind doesn't mention one of our leases, then we need to
1062 - We must look for a status code within IAADDR and within IA_NA, and
1067 - If we get "UseMulticast" when we were already using multicast,
1071 - TAHI uses "NoBinding" at the top level of the message. This
1074 ignore such errors -- treat them as success.
1106 allocating per-zone addresses.
1110 using DHCP for IPv4 address assignment in non-global zones as well.
1137 Appendix A - Choice of Venue
1141 - in dhcpagent
1142 - in in.ndpd
1143 - in a new daemon (say, 'dhcp6agent')
1177 Appendix B - Cross-Reference
1181 - Start dhcpagent and issue "dhcp start" command via libdhcpagent
1182 - Parse StatefulAddrConf interface option from ndpd.conf
1183 - Watch for M and O bits to trigger DHCPv6
1184 - Handle "no routers found" case and start DHCPv6
1185 - Track prefixes and set prefix length on IFF_DHCPRUNNING aliases
1186 - Send new Router Solicitation when prefix unknown
1187 - Change privileges so that dhcpagent can be launched successfully
1191 - Parse new /etc/dhcp/inittab6 file
1192 - Handle new UNUMBER24, SNUMBER64, IPV6, DUID and DOMAIN types
1193 - Add DHCPv6 option iterators (dhcpv6_find_option and
1195 - Add dlpi_to_arp function (temporary)
1199 - Add stable DUID and IAID creation and storage support
1201 - Support new DECLINING and RELEASING states introduced by DHCPv6.
1202 - Update implementation so that it doesn't rely on gettimeofday()
1204 - Extend the hostconf functions to support DHCPv6, using a new
1209 - Add support for DHCPv6 packet decoding (all types)
1210 - Add "dhcp6" filter keyword
1211 - Fix known bugs in DHCP filtering
1215 - Remove inet-only restriction on "dhcp" keyword
1219 - Remove strange "-I list" feature.
1220 - Add support for DHCPv6 and iterating over IPv6 interfaces.
1224 - Add extensions to IPv6 source address selection to prefer DHCPv6
1226 - Fix known bugs in source address selection (remaining from TX
1231 - Add ifindex and source/destination address into PKT_LIST.
1232 - Add more ARPHDR_* and IPPORT_* values.