the webtool does not return a bugid.

There's a fix to be put into /lib/svc/method/net-svc (replaces the
existing function)

Nils

-- 

MCS - Technik

MCS MOORBEK COMPUTER SYSTEME GmbH
Essener Bogen 17 - 22419 Hamburg - Germany
Tel.: +49 (0)40.53773.0 -  Fax: +49 (0)40.53773.200
eMail: mailto:nils.goroll at mcs.de
Web: http://www.mcs.de
-------------- next part --------------
#
# update_files
# This routine takes as a parameter, the name of the respective file 
# (hosts or ipnodes) to update with the new host name and IP address.
#
update_files ()
{
        filename=$1;

        # escape dots for egrep
        ipaddr_re="`echo $ipaddr | sed 's:\.:\\\.:g'`"

        # check if the address and host are already in the file
        # as we need them - in this case we dont need to edit
        # the file at all
        #       
        # - The ipaddr must be first field with optional whitespace in front
        # - Either the hostname follows seperated by one whitespace (first
        #   case of grouping after ipaddr), or it follows later
        # - if the hostname is in a field further right, it must always
        #   be preceeded by whitespace (ensured by first grouping)
        #   and terminated by either whitespace, EOL or a comment

        # strip off all comments before matching
        sed 's/#.*//' /etc/inet/${filename} | \
            /usr/bin/egrep \
                "^[     ]*${ipaddr_re}([        ]|[     ].*[     
])${hostname}([        #]|$)" \
                >/dev/null \
                && return

        # If we get here, we know that we are going to edit the file,
        # so delete any "Added by DHCP" comments
        /usr/bin/sed -e 's/[     ]*# Added by DHCP$//' /etc/inet/${filename} \
            > /tmp/${filename}_clear.$$

        if /usr/bin/grep "^[    ]*$ipaddr[      ]" /etc/inet/${filename} 
>/dev/null ; then
                #
                # IP address is already in the file, but the hostname
                # isn't (otherwise we would have bailed out in the first
                # egrep for ipaddr + host)
                #
                # Therefore, we append the proper DHCP hostname to the existing
                # line by putting it in front of EOL or a comment, whatever is 
first
                #
                /usr/bin/sed -e "/^[    ]*${ipaddr_re}[         ].*#/ {
                                          s/\\(#.*\\)\$/        ${hostname}     
\\1 # Added by DHCP/
                                          n
                                        }
                                 /^[    ]*${ipaddr_re}[         ]/ s/\$/        
${hostname}     # Added by DHCP/" \
                    /tmp/${filename}_clear.$$ >/tmp/${filename}.$$
                if [ $? != 0 ] ; then
                        # Emergency exit, sed failed
                        mv -f /tmp/${filename}_clear.$$ /tmp/${filename}.$$
                fi
        else
                #
                # IP address is missing from the respective file.  Now check
                # to see if the hostname is present with a different IP.
                #
                shift $#        # Clear $0-9 in case grep fails
                set -- `/usr/bin/grep -s -v '^#' /tmp/${filename}_clear.$$ | \
                    /usr/bin/egrep "[    ]${hostname}([  #]|$)"`

                if [ $# -gt 0 ]; then
                        #
                        # Hostname is present in the file. Rewrite this line
                        # to have the new IP address and the DHCP comment.
                        #
                        # include whitespace in group to keep proper formatting
                        /usr/bin/sed -e "s/^[   ]*${1}\\([      
].*\\)\$/${ipaddr}\\1   # Added by DHCP/" \
                            /tmp/${filename}_clear.$$ >/tmp/${filename}.$$

                        if [ $? != 0 ] ; then
                            # Emergency exit, sed failed
                            mv -f /tmp/${filename}_clear.$$ /tmp/${filename}.$$
                        fi

                else
                        #
                        # Hostname is not present in the named file.
                        # Add a new line for the host at the end of
                        # the new respective file.
                        #
                        /usr/bin/mv /tmp/${filename}_clear.$$ \
                            /tmp/${filename}.$$
                        echo "${ipaddr}\t${hostname}\t# Added by DHCP" \
                            >>/tmp/${filename}.$$
                fi
        fi

        /usr/bin/rm -f /tmp/${filename}_clear.$$
        mv_file /tmp/${filename}.$$ /etc/inet/${filename} 444
}

Reply via email to