New upstream release
[quagga-debian.git] / solaris / README.txt
1 To build packages for Solaris 10:
2
3 Requirements:
4 -------------
5
6 - Development environment including gcc (eg as shipped with Solaris 10)
7
8 - The Package tools from Solaris 10 or Solaris Nevada/Express.
9
10 - i.manifest and r.manifest scripts as supplied with Solaris Express
11   in /usr/sadm/install/scripts/ or from OpenSolaris.org:
12
13   http://cvs.opensolaris.org/source/xref/usr/src/pkgdefs/common_files/i.manifest
14   http://cvs.opensolaris.org/source/xref/usr/src/pkgdefs/common_files/r.manifest
15   
16   i.manifest must be at least version 1.5. Place these scripts in
17   this directory if you are using Solaris 10 GA (which does not ship with
18   these scripts), or in the solaris/ directory in the Quagga source.
19
20
21 Package creation instructions:
22 ------------------------------
23
24 1. Configure and build Quagga in the top level build directory as per
25 normal, eg:
26
27         ./configure --prefix=/usr/local/quagga \
28                 --localstatedir=/var/run/quagga
29                 --enable-gcc-rdynamic --enable-opaque-lsa --enable-ospf-te \
30                 --enable-multipath=64 --enable-user=quagga \
31                 --enable-ospfclient=yes --enable-ospfapi=yes  \
32                 --enable-group=quagga --enable-nssa --enable-opaque-lsa
33
34 You will need /usr/sfw/bin and /usr/ccs/bin in your path.
35
36 2. make install in the top-level build directory, it's a good idea to make
37 use of DESTDIR to install to an alternate root, eg:
38
39         gmake DESTDIR=/var/tmp/qroot install
40
41 3. In this directory (solaris/), run make packages, specifying DESTDIR if
42 appropriate, eg:
43
44         gmake DESTDIR=/var/tmp/qroot packages
45
46 This should result in 4 packages being created:
47
48         quagga-libs-...-$ARCH.pkg       - QUAGGAlibs
49         quagga-daemons-...-$ARCH.pkg    - QUAGGAdaemons
50         quagga-doc-...-$ARCH.pkg        - QUAGGAdoc
51         quagga-dev-...-$ARCH.pkg        - QUAGGAdev
52         quagga-smf-...-$ARCH.pkg        - QUAGGAsmf
53
54 QUAGGAlibs and QUAGGAdaemons are needed for daemon runtime. QUAGGAsmf
55 provides the required bits for Solaris 10+ SMF support.
56
57
58 Install and post-install configuration notes:
59 ---------------------------------------------
60
61 - If you specified a user/group which does not exist per default on Solaris
62   (eg quagga/quagga) you *must* create these before installing these on a
63   system. The packages do *not* create the users.
64
65 - The configuration files are not created. You must create the configuration
66   file yourself, either with your complete desired configuration, or else if
67   you wish to use the telnet interface for further configuration you must
68   create them containing at least:
69
70          password whatever
71
72   The user which quagga runs as must have write permissions on this file, no
73   other user should have read permissions, and you would also have to enable
74   the telnet interface (see below).
75
76 - SMF notes:
77
78   - QUAGGAsmf installs a svc:/network/routing/quagga service, with an
79     instance for each daemon
80   
81   - The state of all instances of quagga service can be inspected with:
82   
83         svcs -l svc:/network/routing/quagga
84   
85     or typically just with a shortcut of 'quagga':
86     
87         svcs -l quagga
88   
89   - A specific instance of the quagga service can be inspected by specifying
90     the daemon name as the instance, ie quagga:<daemon>:
91     
92         svcs -l svc:/network/routing/quagga:zebra
93         svcs -l svc:/network/routing/quagga:ospfd
94         <etc>
95
96     or typically just with the shortcut of 'quagga:<daemon>' or even
97     <daemon>:
98     
99         svcs -l quagga:zebra
100         svcs -l ospfd
101     
102     Eg:
103     
104     # # svcs -l ripd
105     fmri         svc:/network/routing/quagga:ripd
106     name         Quagga: ripd, RIPv1/2 IPv4 routing protocol daemon.
107     enabled      true
108     state        online
109     next_state   none
110     state_time   Wed Jun 15 16:21:02 2005
111     logfile      /var/svc/log/network-routing-quagga:ripd.log
112     restarter    svc:/system/svc/restarter:default
113     contract_id  93 
114     dependency   require_all/restart svc:/network/routing/quagga:zebra (online)
115     dependency   require_all/restart file://localhost//usr/local/quagga/etc/ripd.conf (online)
116     dependency   require_all/none svc:/system/filesystem/usr:default (online)
117     dependency   require_all/none svc:/network/loopback (online)
118
119   - Configuration of startup options is by way of SMF properties in a
120     property group named 'quagga'. The defaults should automatically be
121     inline with how you configured Quagga in Step 1 above. 
122   
123   - By default the VTY interface is disabled. To change this, see below for
124     how to set the 'quagga/vty_port' property as appropriate for
125     /each/ service. Also, the VTY is set to listen only to localhost by
126     default, you may change the 'quagga/vty_addr' property as appropriate
127     for both of the 'quagga' service and specific individual instances of
128     the 'quagga' service (ie quagga:zebra, quagga:ospfd, etc..).
129     
130   - Properties belonging to the 'quagga' service are inherited by all
131     instances. Eg:
132     
133     # svcprop -p quagga svc:/network/routing/quagga
134     quagga/group astring root
135     quagga/retain boolean false
136     quagga/user astring root
137     quagga/vty_addr astring 127.1
138     quagga/vty_port integer 0
139     
140     # svcprop -p quagga svc:/network/routing/quagga:ospfd
141     quagga/retain_routes boolean false
142     quagga/group astring root
143     quagga/retain boolean false
144     quagga/user astring root
145     quagga/vty_addr astring 127.1
146     quagga/vty_port integer 0
147     
148     All instances will inherit these properties, unless the instance itself
149     overrides these defaults. This also implies one can modify properties of
150     the 'quagga' service and have them apply to all daemons.
151     
152     # svccfg -s svc:/network/routing/quagga \
153         setprop quagga/vty_addr = astring: ::1
154     
155     # svcprop -p quagga svc:/network/routing/quagga
156     quagga/group astring root
157     quagga/retain boolean false
158     quagga/user astring root
159     quagga/vty_port integer 0
160     quagga/vty_addr astring ::1
161     
162     # # You *must* refresh instances to have the property change
163     # # take affect for the 'running snapshot' of service state.
164     # svcadm refresh quagga:ospfd
165     
166     # svcprop -p quagga svc:/network/routing/quagga:ospfd
167     quagga/retain_routes boolean false
168     quagga/group astring root
169     quagga/retain boolean false
170     quagga/user astring root
171     quagga/vty_port integer 0
172     quagga/vty_addr astring ::1
173     
174     Other daemon-specific options/properties may be available, however they
175     are not yet honoured/used (eg ospfd/apiserver on svc:/network/ospf).
176
177   - As SMF is dependency aware, restarting network/zebra will restart all the
178     other daemons.
179   
180   - To upgrade from one set of Quagga packages to a newer release, one must
181     first pkgrm the installed packages. When one pkgrm's QUAGGAsmf all
182     property configuration will be lost, and any customisations will have to
183     redone after installing the updated QUAGGAsmf package.
184   
185 - These packages are not supported by Sun Microsystems, report bugs via the
186   usual Quagga channels, ie Bugzilla. Improvements/contributions of course
187   would be greatly appreciated.
188