VirtualBox

source: vbox/trunk/src/VBox/HostDrivers/VBoxNetFlt/darwin/loadnetflt.sh

Last change on this file was 98103, checked in by vboxsync, 17 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to LF
  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 3.9 KB
Line 
1#!/bin/bash
2## @file
3# For development.
4#
5
6#
7# Copyright (C) 2006-2023 Oracle and/or its affiliates.
8#
9# This file is part of VirtualBox base platform packages, as
10# available from https://www.virtualbox.org.
11#
12# This program is free software; you can redistribute it and/or
13# modify it under the terms of the GNU General Public License
14# as published by the Free Software Foundation, in version 3 of the
15# License.
16#
17# This program is distributed in the hope that it will be useful, but
18# WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20# General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, see <https://www.gnu.org/licenses>.
24#
25# The contents of this file may alternatively be used under the terms
26# of the Common Development and Distribution License Version 1.0
27# (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
28# in the VirtualBox distribution, in which case the provisions of the
29# CDDL are applicable instead of those of the GPL.
30#
31# You may elect to license modified versions of this file under the
32# terms and conditions of either the GPL or the CDDL or both.
33#
34# SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
35#
36
37SCRIPT_NAME="loadnetflt"
38XNU_VERSION=`LC_ALL=C uname -r | LC_ALL=C cut -d . -f 1`
39
40DRVNAME="VBoxNetFlt.kext"
41BUNDLE="org.virtualbox.kext.VBoxNetFlt"
42
43DEP_DRVNAME="VBoxDrv.kext"
44DEP_BUNDLE="org.virtualbox.kext.VBoxDrv"
45
46
47DIR=`dirname "$0"`
48DIR=`cd "$DIR" && pwd`
49DEP_DIR="$DIR/$DEP_DRVNAME"
50DIR="$DIR/$DRVNAME"
51if [ ! -d "$DIR" ]; then
52 echo "Cannot find $DIR or it's not a directory..."
53 exit 1;
54fi
55if [ ! -d "$DEP_DIR" ]; then
56 echo "Cannot find $DEP_DIR or it's not a directory... (dependency)"
57 exit 1;
58fi
59if [ -n "$*" ]; then
60 OPTS="$*"
61else
62 OPTS="-t"
63fi
64
65trap "sudo chown -R `whoami` $DIR $DEP_DIR; exit 1" INT
66
67# Try unload any existing instance first.
68LOADED=`kextstat -b $BUNDLE -l`
69if test -n "$LOADED"; then
70 echo "${SCRIPT_NAME}.sh: Unloading $BUNDLE..."
71 sudo kextunload -v 6 -b $BUNDLE
72 LOADED=`kextstat -b $BUNDLE -l`
73 if test -n "$LOADED"; then
74 echo "${SCRIPT_NAME}.sh: failed to unload $BUNDLE, see above..."
75 exit 1;
76 fi
77 echo "${SCRIPT_NAME}.sh: Successfully unloaded $BUNDLE"
78fi
79
80set -e
81
82# Copy the .kext to the symbols directory and tweak the kextload options.
83if test -n "$VBOX_DARWIN_SYMS"; then
84 echo "${SCRIPT_NAME}.sh: copying the extension the symbol area..."
85 rm -Rf "$VBOX_DARWIN_SYMS/$DRVNAME"
86 mkdir -p "$VBOX_DARWIN_SYMS"
87 cp -R "$DIR" "$VBOX_DARWIN_SYMS/"
88 OPTS="$OPTS -s $VBOX_DARWIN_SYMS/ "
89 sync
90fi
91
92# On smbfs, this might succeed just fine but make no actual changes,
93# so we might have to temporarily copy the driver to a local directory.
94if sudo chown -R root:wheel "$DIR" "$DEP_DIR"; then
95 OWNER=`/usr/bin/stat -f "%u" "$DIR"`
96else
97 OWNER=1000
98fi
99if test "$OWNER" -ne 0; then
100 TMP_DIR=/tmp/${SCRIPT_NAME}.tmp
101 echo "${SCRIPT_NAME}.sh: chown didn't work on $DIR, using temp location $TMP_DIR/$DRVNAME"
102
103 # clean up first (no sudo rm)
104 if test -e "$TMP_DIR"; then
105 sudo chown -R `whoami` "$TMP_DIR"
106 rm -Rf "$TMP_DIR"
107 fi
108
109 # make a copy and switch over DIR
110 mkdir -p "$TMP_DIR/"
111 sudo cp -Rp "$DIR" "$TMP_DIR/"
112 DIR="$TMP_DIR/$DRVNAME"
113
114 # load.sh puts it here.
115 DEP_DIR="/tmp/loaddrv.tmp/$DEP_DRVNAME"
116
117 # retry
118 sudo chown -R root:wheel "$DIR" "$DEP_DIR"
119fi
120
121sudo chmod -R o-rwx "$DIR"
122sync
123if [ "$XNU_VERSION" -ge "10" ]; then
124 echo "${SCRIPT_NAME}.sh: loading $DIR... (kextutil $OPTS -d \"$DEP_DIR\" \"$DIR\")"
125 sudo kextutil $OPTS -d "$DEP_DIR" "$DIR"
126else
127 echo "${SCRIPT_NAME}.sh: loading $DIR... (kextload $OPTS -d \"$DEP_DIR\" \"$DIR\")"
128sudo kextload $OPTS -d "$DEP_DIR" "$DIR"
129fi
130sync
131sudo chown -R `whoami` "$DIR" "$DEP_DIR"
132kextstat | grep org.virtualbox.kext
133
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use