VirtualBox

source: vbox/trunk/src/VBox/Devices/Network/solaris/vnicinit_solaris.sh@ 10152

Last change on this file since 10152 was 9598, checked in by vboxsync, 17 years ago

Fixed hostif vnic script to work on newer and older nevada builds.
Tested on 82 and 86. 83 is where the format change happened.

  • Property svn:eol-style set to LF
  • Property svn:executable set to *
  • Property svn:keywords set to Revision Id
File size: 3.3 KB
Line 
1#!/bin/bash
2# Sun xVM VirtualBox
3# VirtualBox VNIC setup script for Solaris hosts with Crossbow.
4#
5# Copyright (C) 2007 Sun Microsystems, Inc.
6#
7# This file is part of VirtualBox Open Source Edition (OSE), as
8# available from http://www.virtualbox.org. This file is free software;
9# you can redistribute it and/or modify it under the terms of the GNU
10# General Public License (GPL) as published by the Free Software
11# Foundation, in version 2 as it comes in the "COPYING" file of the
12# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
13# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
14#
15# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
16# Clara, CA 95054 USA or visit http://www.sun.com if you need
17# additional information or have any questions.
18#
19
20if [ -z "$1" ]; then
21 echo "Missing MAC address."
22 echo
23 echo "Usage: $0 macaddress [vnicname]"
24 echo " A new VNIC is created if no vnicname is provided."
25 exit 1
26fi
27
28mac=$1
29# Create the VNIC if required
30if [ -z "$2" ]; then
31 # snv <= 82 is to handled differently (dladm format changes at 83+)
32 snv_str=`uname -v`
33 snv_num=${snv_str##*[a-z][_]}
34
35 # Try obtain one that's currently active (82 dladm show-link doesn't indicate status; just use show-dev atm)
36 if [ $snv_num -le 82 ]; then
37 phys_nic=`/usr/sbin/dladm show-dev -p | /usr/bin/awk 'NF==4 && $2=="link=up" { print $1 }'`
38 else
39 phys_field=`/usr/sbin/dladm show-link -p | /usr/bin/awk 'NF==5 && $4=="STATE=\"up\"" { print $1 }'`
40 eval $phys_field
41 phys_nic="$LINK"
42 fi
43
44 if [ -z "$phys_nic" ]; then
45 # Failed to get a currently active NIC, get the first available link.
46 if [ $snv_num -le 82 ]; then
47 phys_nic=`/usr/sbin/dladm show-link -p | /usr/bin/nawk '/legacy/ {next} {print $1; exit}'`
48 else
49 phys_field=`/usr/sbin/dladm show-link -p | /usr/bin/awk 'NF==5 && $2=="CLASS=\"phys\"" { print $1 }'`
50 eval $phys_field
51 phys_nic="$LINK"
52 fi
53 if [ -z "$phys_nic" ]; then
54 # Failed to get any NICs!
55 echo "Failed to get a physical NIC to bind to."
56 exit 1
57 fi
58 fi
59
60 # To use a specific physical NIC, replace $phys_nic with the name of the NIC.
61 vnic_name=`/usr/lib/vna $phys_nic $mac`
62 if [ $? != 0 ]; then
63 exit 1
64 fi
65
66 # The vna utility can return the id/name depending on the distro
67 case "$vnic_name" in
68 vnic[0-9]*)
69 vnic_name="$vnic_name"
70 ;;
71 *)
72 vnic_name="vnic$vnic_name"
73 ;;
74 esac
75else
76 vnic_name=$2
77fi
78vnic_id=${vnic_name##*[a-z]}
79
80if [ ${vnic_id} -lt 10 ]; then
81 host_ip="192.168.1.10${vnic_id}"
82 guest_ip="192.168.1.20${vnic_id}"
83elif [ ${vnic_id} -lt 256 ]; then
84 host_ip="192.168.1.${vnic_id}"
85 guest_ip="192.168.2.${vnic_id}"
86elif [ ${vnic_id} -gt 899 ]; then
87 let "temp_id = $vnic_id % 900"
88 host_ip="192.168.1.10${temp_id}"
89 guest_ip="192.168.1.20${temp_id}"
90else
91 # VNIC ID is probably off the scale!
92 host_ip="192.168.1.10"
93 guest_ip="192.168.1.20"
94fi
95
96netmask="255.255.255.0"
97
98if [ -z "$2" ]; then
99 /sbin/ifconfig $vnic_name plumb
100 /sbin/ifconfig $vnic_name $host_ip destination $guest_ip netmask $netmask up
101#else
102# Do existing VNIC configuration here if needed...
103fi
104
105echo "$vnic_name"
106exit 0
107
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette