MacOS X(osx)でJumboFrame `/Library/StartupItems' の書き方

自宅にGbEなセグメントがあるならば、JumboFrameを使いたいですよね。
で、毎回起動したら sysctl -w とか ifconfig とかうちたくないですよね。
てことで、/Library/StartupItems に入れてしまいましょう。


% sudo mkdir /Library/StartupItems/JumboFrame
% sudo cat > /Library/StartupItems/JumboFrame/StartupParameters.plist
{
Description = "JumboFrame";
Provides = ("JumboFrame");
Requires = ("Resolver");
Uses = ("Core Graphics");
OrderPreference = "None";
Messages = {
restart = "Reconfigure JumboFrame";
start = "Configure JumboFrame";
stop = "Stop using JumboFrame";
};
}
^D
% cat > /Library/StartupItems/JumboFrame/JumboFrame
#!/bin/sh
. /etc/rc.common
if [ ${1:-noset} == "stop" ] || [ ${1:-noset} == "restart" ]; then
ConsoleMessage "Stop using JumboFrame"
if [ ${1:-noset} = "stop" ]; then
/usr/sbin/sysctl -w net.inet.raw.maxdgram=8192
/usr/sbin/sysctl -w net.inet.raw.recvspace=8192
/usr/sbin/sysctl -w net.inet.tcp.sendspace=32768
/usr/sbin/sysctl -w net.inet.tcp.recvspace=32768
/usr/sbin/sysctl -w net.inet.udp.recvspace=42080
/sbin/ifconfig en0 mtu 1500
exit 0
fi
fi
ConsoleMessage "Configure JumboFrame"
# jumboframe mtu 9Kbytes
/usr/sbin/sysctl -w net.inet.raw.maxdgram=16384
/usr/sbin/sysctl -w net.inet.raw.recvspace=16384
/usr/sbin/sysctl -w net.inet.tcp.sendspace=65536
/usr/sbin/sysctl -w net.inet.tcp.recvspace=65536
/usr/sbin/sysctl -w net.inet.udp.recvspace=65536
/sbin/ifconfig en0 mtu 9000
^D
% sudo chmod 755 /Library/StartupItems/JumboFrame/JumboFrame
再起動すれば、ちゃんとmtuが9Kbytesになっているはずです。
% ifconfig en0|grep -i mtu とでもして確認しましょう。