annotate core/rc/rc.networking @ 630:58211c615a8c

core/rc: add basic rc.networking support
author David Demelier <markand@malikania.fr>
date Tue, 23 Jul 2019 23:00:00 +0200
parents
children 4088afe6988e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
630
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 #!/bin/sh
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 # /etc/rc.init -- basic networking script
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 # Copyright (c) 2019 David Demelier <markand@malikania.fr>
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 # Permission to use, copy, modify, and/or distribute this software for any
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 # purpose with or without fee is hereby granted, provided that the above
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 # copyright notice and this permission notice appear in all copies.
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
18 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
19
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 # This script is provided mostly for static configuration and/or more complex
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 # scenarios where the system administrator requires full control over the
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 # networking interfaces. Most people would prefer using dhcpcd for simple
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 # configurations or NetworkManager on desktop systems.
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 # The file /etc/rc.networking allows you to define functions for each interface
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 # and will automatically call "start" and "stop" at boot and shutdown
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 # respectively.
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 # See below for basic examples and uncomment the appropriate one.
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 if [ -f /etc/rc.conf ]; then
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 . /etc/rc.conf
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 fi
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 lo()
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 {
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 echo "Setting network interface: lo"
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
40
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 case $1 in
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 "start")
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 ip link set dev lo up
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 ip addr add 127.0.0.1/8 dev lo
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 ip -6 addr add ::1/128 dev lo
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 ;;
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 "stop")
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 ip -6 addr del ::1/128 dev lo
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 ip addr del 127.0.0.1 dev lo
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 ip link set dev lo down
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 ;;
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 esac
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 }
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 # Example 1: static IP on eth0 interface.
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 # eth0()
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 # {
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 # echo "Setting network interface: eth0"
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 # case $1 in
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 # "start")
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 # ip link set eth0 up
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 # ip addr add 192.168.0.1 dev eth0
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 # ;;
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 # "stop")
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 # ip addr del 192.168.0.1 dev eth0
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 # ip link set eth0 down
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 # ;;
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 # esac
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 # }
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 usage()
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 {
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 echo "usage: $(basename $0) start|stop [interface]" 1>&2
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 exit 1
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 }
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
80
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 if [ $# -eq 0 ]; then
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 usage
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 # NOTREACHED
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 fi
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
85
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 case $1 in
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 "start"|"stop")
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 # If no interface is given, iterate over all defined in
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 # INTERFACES from /etc/rc.conf.
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 #
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 if [ $# -eq 1 ]; then
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 for iface in $INTERFACES; do
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 $iface $1
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 done
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 else
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 $2 $1
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 fi
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 ;;
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 *)
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 usage
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 # NOTREACHED
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 ;;
58211c615a8c core/rc: add basic rc.networking support
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 esac