#!/bin/sh -c "echo This script should not be run directly.; exit 1"
################################################################
# Myricom GM networking software and documentation
# Copyright 2001, 2002 by Myricom, Inc.
# All rights reserved.   See the file `COPYING' for copyright notice.
################################################################
# author: glenn@myri.com
# $Source: /repository/gm/drivers/macosx/gm_arch_install,v $
################################################################
# Required entry points
################################################################

# Make sure we find the right tools on this machine, regardless of
# the user's path.
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin
export PATH

gm_arch_driver_start_command="/System/Library/StartupItems/GM/gm start"
gm_arch_install_program=install

gm_macos_version_checked=0
gm_debug_arch_stop_gm=0

gm_arch_stop_gm ()
{
    # unload any loaded GM drivers
    if sysctl net.gm 2>&1 | grep -q gm 
    then
	gm_echo "Unloading gm driver(s)."
	kextunload -m com.Myricom.iokit.gm  >/dev/null 2>&1
    fi
}

gm_arch_start_gm ()
{

# Grr..paranoid MacOSX 10.2 requires modules be owned by user root, group wheel
# in order to be loaded.  This doesn't play nicely with links to a shared installation
# owned by a user
    if [ -L /System/Library/StartupItems/GM/gm ]
    then
	rm -rf /var/run/gm.kext
	cp -r /System/Library/StartupItems/GM/gm.kext /var/run
	chown -R root:wheel /var/run/gm.kext
	kextload /var/run/gm.kext || die Error installing GM driver module.
    else
	kextload /System/Library/StartupItems/GM/gm.kext \
	|| die Error installing GM driver module.
    fi
}

gm_arch_stop_ethernet ()
{
    if sysctl net.gm 2>&1 | grep -q gm 
    then
	gm_echo Taking down ethernet interfaces.
	unit=`sysctl net.gm.gm_base_en_unit | awk '{print $2}'`
	maxunit=`echo $unit | awk '{print 4 + $1}'`
	while [ $unit -le $maxunit ]
	do
	    device="en$unit"
# ifconfig does not delete ipv6 addresses, even though
# it adds one automatically when an ipv4 address is added.
	    if [ -x /usr/sbin/ip6 ]
	    then
		/usr/sbin/ip6 -d $device >/dev/null 2>&1
	    fi
	    ifconfig $device down delete >/dev/null 2>&1
	    unit=`echo $unit | awk '{print 1 + $1}'`
	done
    fi
}

gm_arch_start_ethernet ()
{
    true
}

gm_arch_install_ethernet ()
{
    true
}

gm_arch_install_gm ()
{
    gm_macos_check_version \
    && gm_mkdir /System/Library/StartupItems/GM \
    && gm_cp ${prefix}/etc/init.d/gm  /System/Library/StartupItems/GM/gm \
    && gm_mkdir /System/Library/StartupItems/GM/gm.kext \
    && gm_mkdir /System/Library/StartupItems/GM/gm.kext/Contents \
    && gm_cp ${prefix}/sbin/gm.kext/Contents/Info.plist \
	     /System/Library/StartupItems/GM/gm.kext/Contents/Info.plist \
    && gm_mkdir /System/Library/StartupItems/GM/gm.kext/Contents/MacOS \
    && gm_cp ${prefix}/sbin/gm.kext/Contents/MacOS/gm \
	     /System/Library/StartupItems/GM/gm.kext/Contents/MacOS/gm \
    && gm_do sync \
    && gm_log_uninstall_command "/System/Library/StartupItems/GM/gm stop" 
}

################################################################
# Macos-specific functions
################################################################

gm_macos_check_version ()
{
    if test $gm_macos_version_checked != 0
    then
	return 0
    fi

    version=`uname -r`
    case "$version" in
    [7890].* )
	gm_echo Macos-"$version" is not supported by this release.
	status=1
	;;
    esac
    gm_macos_version_checked=1
    return 0
}


