1 |
blueness 14/12/30 13:23:04 |
2 |
|
3 |
Added: minissdpd.initd-r2 |
4 |
Log: |
5 |
Improve init scripts, bug #533888. Thanks Christohper Harrington <ironiridis@×××××.com>. |
6 |
|
7 |
(Portage version: 2.2.14/cvs/Linux x86_64, signed Manifest commit with key 0xF52D4BBA) |
8 |
|
9 |
Revision Changes Path |
10 |
1.1 net-misc/minissdpd/files/minissdpd.initd-r2 |
11 |
|
12 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-misc/minissdpd/files/minissdpd.initd-r2?rev=1.1&view=markup |
13 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-misc/minissdpd/files/minissdpd.initd-r2?rev=1.1&content-type=text/plain |
14 |
|
15 |
Index: minissdpd.initd-r2 |
16 |
=================================================================== |
17 |
#!/sbin/runscript |
18 |
|
19 |
MINISSDPD="/usr/sbin/minissdpd" |
20 |
PIDFILE="/var/run/minissdpd.pid" |
21 |
|
22 |
depend() { |
23 |
need net |
24 |
before miniupnpd |
25 |
} |
26 |
|
27 |
interfaceup() { |
28 |
# interface exists? |
29 |
if [ ! -f /sys/class/net/$1/flags ]; then return 1; fi |
30 |
let "IFUP = `cat /sys/class/net/$1/flags` & 1" |
31 |
# interface has UP flag? |
32 |
if [ $IFUP -eq 0 ]; then return 1; fi |
33 |
return 0 |
34 |
} |
35 |
|
36 |
# awk script: scans the /proc routing table for local subnets |
37 |
# 1. filter list for entries with a gateway (column 3) of 0.0.0.0 (ie interface-local) |
38 |
# 2. read column 2 for network-order hex encoded subnet address |
39 |
# 3. match against a 10.x.x.x, 172.(16-31).x.x, or 192.168.x.x address |
40 |
# 4. print out any interface (column 1) that matches |
41 |
privateinterfaces() { |
42 |
awk -f - /proc/net/route <<'FindPrivateNetworks' |
43 |
function p(m,n) { return(and(IP,m) == n); } |
44 |
$3=="00000000" { IP=strtonum("0x"$2); if (p(0xff,0x0a) || p(0x1fff,0x10ac) || p(0xffff,0xa8c0)) print $1; } |
45 |
FindPrivateNetworks |
46 |
} |
47 |
|
48 |
start() { |
49 |
ebegin "Starting minissdpd" |
50 |
|
51 |
ARGS="" |
52 |
if [ "x$MINISSDPD_IFACE" = "x" ]; then |
53 |
ewarn "No interfaces provided, using interfaces on private networks" |
54 |
IFLIST=$(privateinterfaces) |
55 |
else |
56 |
IFLIST="$MINISSDPD_IFACE" |
57 |
fi |
58 |
|
59 |
eindent |
60 |
for IF in $IFLIST; do |
61 |
if interfaceup $IF; then |
62 |
einfo Adding interface $IF |
63 |
ARGS+="-i $IF " |
64 |
else |
65 |
ewarn "Interface $IF is not up" |
66 |
fi |
67 |
done |
68 |
eoutdent |
69 |
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $MINISSDPD -- $ARGS |
70 |
eend $? |
71 |
} |
72 |
|
73 |
stop() { |
74 |
ebegin "Stopping minissdpd" |
75 |
start-stop-daemon --stop --pidfile "${PIDFILE}" |
76 |
eend $? |
77 |
} |