]> rtime.felk.cvut.cz Git - lisovros/iproute2_canprio.git/blob - examples/gaiconf
ss: use new INET_DIAG_SKMEMINFO option to get more memory information for tcp socket
[lisovros/iproute2_canprio.git] / examples / gaiconf
1 #!/bin/sh
2
3 #
4 # Setup address label from /etc/gai.conf
5 #
6 # Written by YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>, 2010.
7 #
8
9 IP=ip
10 DEFAULT_GAICONF=/etc/gai.conf
11 verbose=
12 debug=
13
14 function run ()
15 {
16         if [ x"$verbose" != x"" ]; then
17                 echo "$@"
18         fi
19         if [ x"$debug" = x"" ]; then
20                 "$@"
21         fi
22 }
23
24 function do_load_config ()
25 {
26         file=$1; shift
27         flush=1
28         cat $file | while read command prefix label; do
29                 if [ x"$command" = x"#label" ]; then
30                         if [ ${flush} = 1 ]; then
31                                 run ${IP} -6 addrlabel flush
32                                 flush=0
33                         fi
34                         run ${IP} -6 addrlabel add prefix $prefix label $label
35                 fi
36         done
37 }
38
39 function do_list_config ()
40 {
41         ${IP} -6 addrlabel list | while read p pfx l lbl; do
42                 echo label ${pfx} ${lbl}
43         done
44 }
45
46 function help ()
47 {
48         echo "Usage: $0 [-v] {--list | --config [ ${DEFAULT_GAICONF} ] | --default}"
49         exit 1
50 }
51
52 TEMP=`getopt -o c::dlv -l config::,default,list,verbose -n gaiconf -- "$@"`
53
54 if [ $? != 0 ]; then
55         echo "Terminating..." >&2
56         exit 1
57 fi
58
59 TEMPFILE=`mktemp`
60
61 eval set -- "$TEMP"
62
63 while true ; do
64         case "$1" in
65                 -c|--config)
66                         if [ x"$cmd" != x"" ]; then
67                                 help
68                         fi
69                         case "$2" in
70                         "")     gai_conf="${DEFAULT_GAICONF}"
71                                 shift 2
72                                 ;;
73                         *)      gai_conf="$2"
74                                 shift 2
75                         esac
76                         cmd=config
77                         ;;
78                 -d|--default)
79                         if [ x"$cmd" != x"" ]; then
80                                 help
81                         fi
82                         gai_conf=${TEMPFILE}
83                         cmd=config
84                         ;;
85                 -l|--list)
86                         if [ x"$cmd" != x"" ]; then
87                                 help
88                         fi
89                         cmd=list
90                         shift
91                         ;;
92                 -v)
93                         verbose=1
94                         shift
95                         ;;
96                 --)
97                         shift;
98                         break
99                         ;;
100                 *)
101                         echo "Internal error!" >&2
102                         exit 1
103                         ;;
104         esac
105 done
106
107 case "$cmd" in
108         config)
109                 if [ x"$gai_conf" = x"${TEMPFILE}" ]; then
110                         sed -e 's/^[[:space:]]*//' <<END_OF_DEFAULT >${TEMPFILE}
111                                 label ::1/128       0
112                                 label ::/0          1
113                                 label 2002::/16     2
114                                 label ::/96         3
115                                 label ::ffff:0:0/96 4
116                                 label fec0::/10     5
117                                 label fc00::/7      6
118                                 label 2001:0::/32   7
119 END_OF_DEFAULT
120                 fi
121                 do_load_config "$gai_conf"
122                 ;;
123         list)
124                 do_list_config
125                 ;;
126         *)
127                 help
128                 ;;
129 esac
130
131 rm -f "${TEMPFILE}"
132
133 exit 0
134