summaryrefslogtreecommitdiffstats
path: root/docs/README
blob: d9a70912edb1fc8332ea33d45f0187a23ac48738 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Building VPP Documents

These instructions show how the VPP documentation sources are built.

To build your files, you can either Create a Virtual Environment using
virtualenv, which installs all the required applications for you.

Create a Virtual Environment using virtualenv
============================

For more information on how to use the Python virtual environment check
out https://packaging.python.org/guides/installing-using-pip-and-virtualenv

Get the Documents
------------------------------

For example start with a clone of the vpp.

$ git clone https://gerrit.fd.io/r/vpp
$ cd vpp

Install the virtual environment
----------------------------------------------

$ python -m pip install --user virtualenv 
$ python -m virtualenv env
$ source env/bin/activate
$ pip install -r docs/etc/requirements.txt
$ cd docs

Which installs all the required applications into it's own, isolated,
virtual environment, so as to not interfere with other builds that may
use different versions of software.

Build the html files
----------------------------

Be sure you are in your vpp/docs directory, since that is where Sphinx will
look for your conf.py file, and build the documents into an index.html file

$ make html

View the results
------------------------

If there are no errors during the build process, you should now have an
index.html file in your vpp/docs/_build/html directory, which you can
then view in your browser.
tain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <vnet/mfib/mfib_entry_src.h> static mfib_entry_src_vft mfib_entry_src_vfts[MFIB_N_SOURCES]; static void mfib_entry_src_default_deactiviate (mfib_entry_t *mfib_entry, mfib_entry_src_t *msrc) { } static void mfib_entry_src_default_activiate (mfib_entry_t *mfib_entry, mfib_entry_src_t *msrc) { } static mfib_src_res_t mfib_entry_src_default_cover_change (mfib_entry_t *mfib_entry, mfib_entry_src_t *msrc) { return (MFIB_SRC_OK); } static mfib_src_res_t mfib_entry_src_default_cover_update (mfib_entry_t *mfib_entry, mfib_entry_src_t *msrc) { return (MFIB_SRC_OK); } void mfib_entry_src_register (mfib_source_t source, const mfib_entry_src_vft *mvft) { mfib_entry_src_vfts[source] = *mvft; } void mfib_entry_src_deactivate (mfib_entry_t *mfib_entry, mfib_entry_src_t *msrc) { if (NULL != msrc) mfib_entry_src_vfts[msrc->mfes_src].mev_deactivate(mfib_entry, msrc); } void mfib_entry_src_activate (mfib_entry_t *mfib_entry, mfib_entry_src_t *msrc) { if (NULL != msrc) mfib_entry_src_vfts[msrc->mfes_src].mev_activate(mfib_entry, msrc); } mfib_src_res_t mfib_entry_src_cover_change (mfib_entry_t *mfib_entry, mfib_entry_src_t *msrc) { return (mfib_entry_src_vfts[msrc->mfes_src].mev_cover_change(mfib_entry, msrc)); } mfib_src_res_t mfib_entry_src_cover_update (mfib_entry_t *mfib_entry, mfib_entry_src_t *msrc) { return (mfib_entry_src_vfts[msrc->mfes_src].mev_cover_update(mfib_entry, msrc)); } void mfib_entry_src_module_init (void) { mfib_entry_src_vft mvft = { .mev_activate = mfib_entry_src_default_activiate, .mev_deactivate = mfib_entry_src_default_deactiviate, .mev_cover_change = mfib_entry_src_default_cover_change, .mev_cover_update = mfib_entry_src_default_cover_update, }; mfib_source_t source; FOREACH_MFIB_SOURCE(source) { mfib_entry_src_register(source, &mvft); } mfib_entry_src_rr_module_init(); }