net-loc revision 6ba597c56d749c61b4f783157f63196d7b2445f0
213N/A# The contents of this file are subject to the terms of the 213N/A# Common Development and Distribution License (the "License"). 213N/A# You may not use this file except in compliance with the License. 213N/A# See the License for the specific language governing permissions 213N/A# and limitations under the License. 213N/A# When distributing Covered Code, include this CDDL HEADER in each 213N/A# If applicable, add the following below this CDDL HEADER, with the 213N/A# fields enclosed by brackets "[]" replaced with your own identifying 213N/A# information: Portions Copyright [yyyy] [name of copyright owner] 2899N/A# Copyright 2010 Sun Microsystems, Inc. All rights reserved. 213N/A# Use is subject to license terms. 1768N/A# echoes DHCP controlled interfaces separated by commas 1768N/A# Don't parse the output of ifconfig(1M) because interfaces that haven't 1768N/A# acquired a DHCP lease also have the DHCP flag set. 1422N/A # 1. parse netstat(1M) output for v4 interfaces in BOUND 213N/A # 2. make a space-separated list of interface names 1768N/A $2 ~ /BOUND/ { printf "%s ", $1 } 213N/A $2 ~ /INFORMATION/ { printf "%s ", $1 }' # echoes the value received through each interface controlled by DHCP # 1 => property is not set # Get all interfaces with DHCP control, IFS is " " if [ "$info" = "" ]; then # set_smf_prop <fmri> <property name> <property value> # Starts the service. If the service is already enabled, restarts it. If # it is not enabled, temporarily enables it. # Temporarily disables the service. # copy_default <dir> <file> # Copies <dir>/<file>.dfl to <dir>/<file> # Write out to temporary file first # No DNS search info for IPv4 echo "Unrecognized DNS configsrc ${configsrc}; ignoring" 'FS="," { for (i = 1; i <= NF; i++) \ print "domain ", $i }' >> $file.$$ 'FS="," { printf("search"); \ for (i = 1; i <= NF; i++) printf(" %s", $i); \ printf("\n") }' >> $file.$$ 'FS="," { for (i = 1; i <= NF; i++) \ print "nameserver ", $i }' >> $file.$$ # Finally, copy our working version to the real thing # user-specified default-domain always wins # Use only the first name $NAWK 'FS="," { print $1 }'` echo "Unrecognized NIS configsrc ${configsrc}; ignoring" 'FS="," { for (i = 1; i <= NF; i++) print $i }' \ # Installs LDAP information using ldapclient(1M) for location echo "Unrecognized LDAP configsrc ${configsrc}; ignoring" # Use ldapclient(1M) to initialize LDAP client settings. # XXX need to check how to specify multiple LDAP servers. # Installs different nameservices for location # Disable nameservices temporarily while we reconfigure. Copy # and set the domainname(1M). echo "Failed to activate location ${loc}:\ missing nameservices-config-file property" # no additional setup needed for files nameservice echo "Unrecognized nameservices value ${ns}; ignoring" # Restart other related services # We explicitly restart here, as restart will only have an # effect if the service is already enabled. We don't want # to enable the service if it's currently disabled. # If config properties are set, update the SMF property and refresh the # service. If config properties are not set, delete the SMF property and # custom policy with policy file # change policy to "none", no need to clear custom_policy_file # IPFilter has to be refreshed to make the changes effective. # Don't set $refresh_ipf as it keeps IPFilter online rather # than disabled. Refresh after IPFilter is disabled below. # update_nfs_file <new nfsv4 domain> # For non-commented-out lines that set NFSMAPID_DOMAIN: # if not previously added by nwam, comment out with a note # if previously added by nwam, remove # For commented-out lines that set NFSMAPID_DOMAIN: # if not commented out by NWAM, leave as-is # if commented out by NWAM, remove # All other lines: leave as-is $0 ~ /^NFSMAPID_DOMAIN=/ { if (index($0, "# Added by NWAM") == 0) printf("#%s # Commented out by NWAM\n", $0); $0 ~ /^#NFSMAPID_DOMAIN=/ { if ($0 !~ /"# Commented out by NWAM"/) $1 !~ /NFSMAPID_DOMAIN=/ { # Now add the desired value # Finally, copy our working version to the real thing # Updates NFSv4 domain for location # activate_loc <location> # Activates the given location # Arguments to net-loc are # method ('start' or 'refresh') # If nwam is not enabled, do nothing and return OK. # In a shared-IP zone we need this service to be up, but all of the work # it tries to do is irrelevant (and will actually lead to the service # failing if we try to do it), so just bail out. # In the global zone and exclusive-IP zones we proceed. # We need to create the default (NoNet and Automatic) # locations, if they don't already exist. So: first check # for the existence of each, and then run the appropriate # nwamcfg script(s) as needed. Restart nwamd if a location is # created, as it needs to read it in. echo "Usage: $0 start|refresh" # If the Legacy location doesn't exist and the file to create the Legacy # location exists, create the Legacy location. Make a copy of it as the user's # intentions before upgrade. Then activate the User location if nis is # involved. Because NIS affects more parts of the system (e.g. automounts) we # are not willing to make NIS part of the Automatic location (i.e. enable it # automatically based on external input) as we do with DHCP-driven DNS. # may not have a writable filesystem in net-nwam. So here we move the # components and rewrite the script to point at the writable filesystem. # We are rewriting configuration variables from the Legacy # location to the User location. Use variable ULP to keep REs $SED -e
's,Legacy,User,' \
-e
's,activation-mode=system,activation-mode=manual,' \
-e
"s,\(ipfilter-config-file=\).*/\(.*\),\1$ULP/\2," \
-e
"s,\(ipfilter-v6-config-file=\).*/\(.*\),\1$ULP/\2," \
-e
"s,\(ipnat-config-file=\).*/\(.*\),\1$ULP/\2," \
-e
"s,\(ippool-config-file=\).*/\(.*\),\1$ULP/\2," \
-e
"s,\(ike-config-file=\).*/\(.*\),\1$ULP/\2," \
-e
"s,\(ipsecpolicy-config-file=\).*/\(.*\),\1$ULP/\2," \
# We are creating the User location here. The User location # is an appromixation of the machine configuration when the # user change or upgraded to this version of NWAM. First # we make sure there isn't an existing User location or any # existing User location data. We then copy all the data # from the Legacy location and create a location pointing at # that data. Lastly we create a version property to note # that we have done this. # The User location is activated if 'nis' is in a non comment # Activate a location. If we've just finished upgrading, and # the User location should be activated, do that (and use nwamadm # to do so, so the enabled property gets set and nwamd knows this # property has a value, we activate that location; else we activate # the NoNet location as a default value. # location hasn't been selected; default to NoNet # activate selected location