Change Summary:
Fix ordering of a list in a readable description. Fix incomplete refactoring: a static function should have been made to take an additional arg.
Review Request #268 — Created Nov. 12, 2016 and submitted
Information | |
---|---|
seeemef@mac.com | |
illumos-gate | |
7388, 8517, 8518, 8519 | |
Reviewers | |
general | |
- add options -h,--reqhost and -1,--primary flag to ipadm create-addr for DHCP, and add reqhost and primary properties for (show|set|reset)-addrprop. - add dhcpagent options REQUEST_FQDN, DNS_DOMAINNAME, and ADOPT_DOMAINNAME. - add ncu ip-reqhost and ip-primary properties for NWAM DHCP. - send for Client Fully Qualified Domain Name (DHCP client option 81) the nodename if the interface is primary or the value of -h,--reqhost or ip-reqhost in order to request that a compatible DHCP server (such as ISC-DHCP or Microsoft Windows DHCP with Windows DNS Dynamic Update) add A and PTR resource records for the life of a lease. - leave existing /etc/hostname.* handling for non-ipadm use to send DHCP client option 12 (Hostname), but also recognize -1,--primary (nodename); -h,--reqhost; or ip-reqhost if defined. (Hostname is sent if an FQDN cannot be determined from configuration). - add dhcpagent option to use RFC 3315-style client ID (IAID/DUID) for all DHCPv4. - update to allow to GET_TAG of ClientID from dhcpagent state machine to let dhcpinfo print a readable version of the system-managed IAID/DUID. - document defunct client option 89. - update man pages.
IPADM tests =========== Initial: - /etc/nodename is "nod" - no defined DNS_DOMAINNAME in /etc/default/dhcpagent - ADOPT_DOMAINNAME is unset (default is no) in /etc/default/dhcpagent - 2 interfaces: e1000g0, e1000g1 1. create-addr: -T dhcp e1000g1/v4 - sends DHCP request without Hostname or ClientFQDN - show-addr: ok with assigned IP address - netstat -D shows no flags for e1000g1 - no DNS entry 2. create-addr: -T dhcp -1 e1000g0/v4 (use the -1,--primary flag) - sends DHCP request with Hostname ("nod") - show-addr: ok with assigned IP address - netstat -D shows [PRIMARY] for e1000g0 3. edit /etc/default/dhcpagent DNS_DOMAINNAME to foo.example.com, and reboot - sends DHCP request with ClientFQDN ("nod" nodename + foo.example.com DNS_DOMAINNAME) - DNS registers the new FQDN (in a "foo" child) 3.b. edit /etc/default/dhcpagent DNS_DOMAINNAME back to example.com, and ipadm-refresh-addr e1000g0/v4 - sends DHCP extension request with new ClientFQDN (nodename + DNS_DOMAINNAME) - DNS registers the new FQDN and un-registers the former value 4. set-addrprop -t -p reqhost=nod-m e1000g0/v4 - sends DHCP extension request message with new ClientFQDN (reqhost + DNS_DOMAINNAME) - show-addrprop -o ALL -p reqhost #-- shows correct CURRENT and no PERSISTENT - DNS registers the requested FQDN and un-registers the former value 4.b. (again but without -t flag) set-addrprop -p reqhost=nod-m2 e1000g0/v4 - sends DHCP extension request message with new ClientFQDN (reqhost + DNS_DOMAINNAME) - show-addrprop -o ALL -p reqhost #-- shows correct CURRENT and PERSISTENT - DNS registers the requested FQDN and un-registers the former value 5. set-addrprop -p reqhost=nod-m.foo.example.com e1000g0/v4 - sends DHCP extension request message with new ClientFQDN (reqhost) - DNS registers the requested FQDN (in a "foo" child) and un-registers the former value 6. reset-addrprop -p reqhost e1000g0/v4 - sends DHCP extension request with new ClientFQDN (nodename + DNS_DOMAINNAME) - show-addrprop: -o ALL -p reqhost -- shows empty CURRENT and PERSISTENT - DNS registers the nodename FQDN and un-registers the former value 7. (non-primary) set-addrprop -p reqhost=nod-r e1000g1/v4 - sends DHCP extension request message with new ClientFQDN (reqhost + DNS_DOMAINNAME) - show-addrprop -o ALL -p reqhost #-- shows correct CURRENT and PERSISTENT - DNS registers the requested FQDN 7.b set-addrprop -p reqhost=nod-r2 e1000g1/v4 - sends DHCP extension request message with new ClientFQDN (reqhost + DNS_DOMAINNAME) - show-addrprop -o ALL -p reqhost #-- shows correct CURRENT and PERSISTENT - DNS registers the requested FQDN and un-registers the former value 8. reset-addrprop -p reqhost e1000g1/v4 - send DHCP extension request without ClientFQDN or Hostname - show-addrprop -o ALL -p reqhost #-- shows empty CURRENT and PERSISTENT - DNS un-registers the former value 9. edit /etc/default/dhcpagent set ADOPT_DOMAINNAME, unset DNS_DOMAINNAME, and refresh-addr e1000g0/v4 - sends DHCP request with ClientFQDN ("nod" nodename + example.com DNSdmain) - DNS registers the requested FQDN and un-registers the former value 10. reset DNSdmain on DHCP server to return foo.example.com, and refresh-addr e1000g0/v4 - sends DHCP request with ClientFQDN ("nod" nodename + example.com previous DNSdmain) 10.b (again) refresh-addr e1000g0/v4 - sends DHCP request with ClientFQDN ("nod" nodename + foo.example.com latest DNSdmain) - DNS registers the requested FQDN and un-registers the former value 11. unset DNSdmain on DHCP server, and refresh-addr e1000g0/v4 - sends DHCP request with ClientFQDN ("nod" nodename + foo.example.com previous DNSdmain) 11.b refresh-addr e1000g0/v4 again - sends DHCP request with ClientFQDN ("nod" nodename + example.com from resolv.conf) 12. reboot - sends DHCP request with ClientFQDN ("nod" nodename + example.com from resolv.conf) 13. install new host, activate V4_DEFAULT_IAID_DUID, and create primary dhcp and addrconf addresses - sends DHCP Discover message with FQDN and IAID/DUID ClientID - IDs show as expected, with common DUID for v6 and v4 - Windows DNS does NOT register the AAAA. ISC-DHCP 4.3 is documented, however, to support this (https://www.reddit.com/r/sysadmin/comments/3ky7yc/howto_with_iscdhcp_43_a_client_configured_with/). 14. create two addresses with active 'primary' flag (ipadm -T dhcp -1 ...) - show-addrprop -o ALL -p primary #-- shows both addresses with PERSISTENT "on" but only one with CURRENT "on" because dhcpagent enforces that only one can be actively primary NWAM tests ========== Initial: - /etc/nodename is "nod" - no defined DNS_DOMAINNAME in /etc/default/dhcpagent - 2 interfaces: e1000g0, e1000g1; and 2 DHCP addresses managed already by NWAM 1. set ip-primary=on for e1000g0 - NWAM bounces the address - sends DHCP request with Hostname ("nod" PQDN) - DNS server does not register the name - netstat -D shows [PRIMARY] for e1000g0 2. edit DNS_DOMAINNAME to example.com, and set ip-primary again to on for e100g0 - NWAM bounces the address - sends DHCP request with ClientFQDN ("nod" hostname + DNS domain name) - DNS server registers the FQDN 3. set ip-reqhost for e1000g0 to nod-m - NWAM bounces the address - sends DHCP request with ClientFQDN ("nod-m" reqhost + DNS domain name) - DNS server registers the FQDN and un-registers the former value 4. clear ip-reqhost for e1000g0 - NWAM bounces the address - sends DHCP request with ClientFQDN ("nod" hostname + DNS domain name) - DNS server registers the FQDN and un-registers the former value 5. set ip-reqhost for e1000g0 to nod-m.foo.example.com - NWAM bounces the address - sends DHCP request with ClientFQDN (reqhost) - DNS server registers the FQDN (in a sub-folder, "foo") and un-registers the former value
Fix ordering of a list in a readable description. Fix incomplete refactoring: a static function should have been made to take an additional arg.
Fix to mention ip-primary in dhcpagent(1m) man
Diff: |
Revision 3 (+1785 -315)
|
---|
These are pass-0/1 comments. For my benefit (allowing further passes), and possibly others', I've put a webrev of this at http://kebe.com/~danmcd/webrevs/7388/ as well. I'll update the webrev every diff revision.
usr/src/cmd/cmd-inet/lib/ipmgmtd/ipmgmt_impl.h (Diff revision 3) |
---|
Your new union-fields are prefixes ipmgmt_am. Could/should you do the same for the other fields? Or were you just worried about extra code change?
usr/src/common/net/dhcp/dhcp_impl.h (Diff revision 3) |
---|
I couldn't find this on page one, but this is a sensible place to put this #define. Thank you.
Query dhcpagent for ipadm show-addrprop 'primary' property, and do not cache it in ipmgmtd.
Testing Done: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 4 (+1843 -315)
|
Just rebase off 26-Jan-17 master. The only two conflicts were in copyright comments.
Diff: |
Revision 5 (+1843 -315)
|
---|
Remove use of /etc/defaultdomain.
Description: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Testing Done: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Diff: |
Revision 6 (+1820 -315)
|
usr/src/cmd/cmd-inet/usr.sbin/nwamcfg/nwamcfg.c (Diff revision 6) |
---|
tab/space mixup here. would be nice to clear neighbouring ones too.
usr/src/lib/libipadm/common/libipadm.h (Diff revision 6) |
---|
can you remove this red ugliness (space-tab mix)
usr/src/lib/libresolv2/common/mapfile-vers (Diff revision 6) |
---|
I think this mapfile change would be good to get its own issue and description what are the consumers for this symbol. You can still post it all as one patch I guess.
usr/src/tools/scripts/onu.1onbld (Diff revision 6) |
---|
It seems this man update (while nice), would be better to be posted in separate issue. This will also help to reduce the overall size for this update.
usr/src/uts/common/netinet/dhcp.h (Diff revision 6) |
---|
missing tab before the value - is not aligned with others
Fix whitespace. Revert onu(1onbld) man update. Accommodate stricter man checks.
Diff: |
Revision 7 (+1817 -315)
|
---|
usr/src/cmd/cmd-inet/lib/ipmgmtd/ipmgmt_persist.c (Diff revision 7) |
---|
Dumb question, since this is ANSI C, could you not replace these memcpy()s with a direct assignment? E.g.
head->am_atype_cache = nodep->am_atype_cache;
?
One last thing. I see new free() calls for non-changed-code allocators. Have you tested these with LD_PRELOAD=libumem.so and UMEM_DEBUG=default ? You should, and then "gcore" the running process after some time running to see if ::findleaks in mdb finds anything. Ask me if you need help with that.
- changes per Dan's code review - fix some whitespace after tsoome alerted me to my wrong tab width - use DHCP response's DNSdmain or resolv.conf's domain if new dhcpagent ADOPT_DOMAINNAME option is active (default is inactive) - remove DHCPv6 changes, as I don't have patience to test anymore given issue 7568, "illumos is not responding to Neighbor Solicitations sent to the solicited-node multicast address (icmpv6)"
Diff: |
Revision 8 (+1976 -315)
|
---|
Update with test steps related to ADOPT_HOSTNAME (DNSdmain and resolv.conf)
Description: |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Testing Done: |
|
Fix test step description to refer to proper "ADOPT_DOMAINNAME", not "ADOPT_HOSTNAME".
Testing Done: |
|
---|
Oops forgot to run lint: fixed a few trivial things.
Diff: |
Revision 9 (+1981 -315)
|
---|
Remove dangling function calls for revoked DHCPv6 changes. The functions were already short-circuited to do nothing for DHCPv6, so this change has no effective impact.
Diff: |
Revision 10 (+1974 -315)
|
---|
Rename as "save_domainname" to follow the analogous save_server_id.
Diff: |
Revision 11 (+1974 -315)
|
---|
Just reformatting test steps
Testing Done: |
|
---|
* Revise to use (function_name(arg) == B_FALSE) instead of (!function_name(arg)). * Amend a line of documentation in dhcpagent.dfl.
Diff: |
Revision 12 (+1978 -315)
|
---|
usr/src/cmd/cmd-inet/lib/ipmgmtd/ipmgmt_door.c (Diff revisions 11 - 12) |
---|
If a function is of type boolean_t, it is acceptable to say if (!boolean_function()) or if (boolean_function()). What is not acceptable is a function of an integer/numerical type, and people use if (int_function()) as a synonym for if (int_function() != 0) or if (!int_function()) as a synonym for if (int_function == 0).
If anyone gave you crap about this, they're probably wrong. If you saw code like this, whoever wrote it likely didn't understand the problem that was trying to be solved.
Drop commit where boolean_t/!-syntax was revised. Tested with an incremental build.
Diff: |
Revision 13 (+1974 -315)
|
---|
Several of your functions appear to be "0 on success, -1 on failure, and no other non-zero failure returns". IF that's the case (esp. no other non-zero failure), you may wish to switch them to boolean_t for slightly better reading. If you are planning on having them return other non-zeros to express more diagnostics, please state that in comments, or by including some other non-zero return values a caller will check.
Again - I would very much like, after this review exchange is done, to have a "git format-patch" so I can webrev it (to better review the man pages) AND to run it on a nontrivial SmartOS test harness.
And finally, don't forget to update your copyrights to 2017.
Thank you for your work on this. This is a big first-submission.
usr/src/cmd/cmd-inet/sbin/dhcpagent/agent.c (Diff revision 13) |
---|
This is only used internally? If so, why ARGSUSED, why not just fix the function signature? Or lose the ARGSUSED if it's vestigal.
usr/src/cmd/cmd-inet/sbin/dhcpagent/util.c (Diff revision 13) |
---|
Another case where perhaps this should be a boolean_t? Or did you mean to return the length of bytes read?
usr/src/cmd/cmd-inet/sbin/dhcpagent/util.c (Diff revision 13) |
---|
You could make this a macro:
define dhcp_get_nodename(buf, buflen) dhcp_get_oneline(ETCNODENAME, (buf), (buflen))
usr/src/cmd/cmd-inet/sbin/dhcpagent/util.c (Diff revision 13) |
---|
1.) None of its callers check its return value.
2.) It looks like you should've made this boolean_t, no?
usr/src/cmd/cmd-inet/sbin/dhcpagent/util.c (Diff revision 13) |
---|
This is the worst possible way to do this. Which is strange given how your EPIC block-comment sets up everything SO NICELY, too. :)
Since fqdnopt is an array, just access element 0:
fqdnopt[0] = [expression].
Speaking of [expression], you're overcomplicating the setting of the bits you want. You explained everything above, just set it to 5:
fqdnopt[0] = 0x5; / See above, bits S and E. /
If you want people to see more clearly, use S_BIT = 0x1 and E_BIT = 0x4 and then have:
fqdnopt[0] = S_BIT | E_BIT;
usr/src/cmd/cmd-inet/sbin/dhcpagent/util.c (Diff revision 13) |
---|
Same thing here... you probably want this to be a boolean_t.
usr/src/cmd/cmd-inet/sbin/dhcpagent/util.c (Diff revision 13) |
---|
Same thing here... you probably want this to be a boolean_t.
Unless you're trying to preserve -1-implies-errno-set semantics?
usr/src/cmd/cmd-inet/sbin/dhcpagent/util.c (Diff revision 13) |
---|
No strlcpy() check here, with a return of -1 upon failure?
usr/src/cmd/cmd-inet/usr.sbin/ipadm/ipadm.c (Diff revision 13) |
---|
Is -1/--primary required for the -h/--reqhost functionality? If not, please file a separate bug for -1/--primary. IMHO you don't have to seperate them as two commits, but you DO have to track the features separately.
If so, never mind and ignore this comment.
usr/src/lib/libipadm/common/ipadm_addr.c (Diff revision 13) |
---|
Same here... check strlcpy() and possibly return IPADM_FAILURE?
* Revisions per code review: ** altered some private function return values to boolean_t. ** clarified some const-definitions re RFC 4702's curious definition of the Client FQDN bitfield. * Ran fully through the test steps again.
Diff: |
Revision 14 (+2000 -315)
|
---|
Add 8517 as a tagged issue ID
Summary: |
|
||||
---|---|---|---|---|---|
Bugs: |
|
Tag this review request as related to new illumos issue 8518 tracking the feature allowing dhcpagent to use a system-managed, RFC 3315-style (i.e., DHCPv6-style) binding identifier as documented in RFC 4361, "Node-specific Client Identifiers for DHCPv4," for all IPv4 interfaces (unless CLIENT_ID is defined).
Bugs: |
|
---|
Thank you for addressing my concerns. I hope you also address Toomas Soome's concerns. I'd like to take this wad and run in on one of our test platforms, to see how having multiple DHCP-fed zones copes with all of this. If it survives there, I'll come back here and check off Ship-it.
Tag as related to new illumos issue 8519 regarding exposing ns_name_pton2 as a SUNWPrivate interface
Bugs: |
|
---|
Assuming I'm correct that dhcp_get_oneline is a new function (and according to src.illumos.org, it is):
[root@00-0c-29-77-9d-fe ~]# nm /sbin/dhcpagent | grep dhcp_get_oneline
[159] | 134625289| 260|FUNC |LOCL |0 |14 |dhcp_get_oneline
[root@00-0c-29-77-9d-fe ~]# [root@00-0c-29-77-9d-fe ~]# vms=vmadm list -H | awk '{print $1}'
[root@00-0c-29-77-9d-fe ~]# for i in $vms ; do zlogin $i ifconfig net0 ; done
net0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 2
inet 172.24.4.66 netmask ffffff00 broadcast 172.24.4.255
ether 12:f8:3e:80:fa:cf
net0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 2
inet 172.24.4.65 netmask ffffff00 broadcast 172.24.4.255
ether 52:c1:68:38:78:f9
net0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 2
inet 172.24.4.64 netmask ffffff00 broadcast 172.24.4.255
ether 12:cb:ee:8d:5e:96
net0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 2
inet 172.24.4.67 netmask ffffff00 broadcast 172.24.4.255
ether a2:31:af:33:cb:5
net0: flags=40001000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,L3PROTECT> mtu 1500 index 2
inet 172.24.4.4 netmask ffffff00 broadcast 172.24.4.255
ether 92:a8:95:a7:dc:94
[root@00-0c-29-77-9d-fe ~]# pgrep dhcpagent
4515
4736
4692
4707
[root@00-0c-29-77-9d-fe ~]# for i in $vms ; do zlogin $i ifconfig net0 dhcp status ; done
Interface State Sent Recv Declined Flags
net0 BOUND 1 1 0 [PRIMARY]
(Began, Expires, Renew) = (07/24/2017 15:13, 07/24/2017 17:13, 07/24/2017 16:13)
Interface State Sent Recv Declined Flags
net0 BOUND 1 1 0 [PRIMARY]
(Began, Expires, Renew) = (07/24/2017 15:13, 07/24/2017 17:13, 07/24/2017 16:13)
Interface State Sent Recv Declined Flags
net0 BOUND 1 1 0 [PRIMARY]
(Began, Expires, Renew) = (07/24/2017 15:13, 07/24/2017 17:09, 07/24/2017 16:11)
Interface State Sent Recv Declined Flags
net0 BOUND 1 1 0 [PRIMARY]
(Began, Expires, Renew) = (07/24/2017 15:13, 07/24/2017 17:13, 07/24/2017 16:15)
ifconfig: net0: interface is not under DHCP control
[root@00-0c-29-77-9d-fe ~]#Looks like SmartOS + your-bits managed to come up okay. Ship it!
* Rebase on master (fix one copyright conflict). * Update style per git-pbchk. (Missed this earlier because I was unaware that git-pbchk does nothing if a branch is pushed to a remote.)
Diff: |
Revision 15 (+2018 -332)
|
---|