summaryrefslogtreecommitdiffstats
path: root/src/vnet/fib/fib_entry_cover.c
AgeCommit message (Collapse)AuthorFilesLines
2020-11-26fib: Expressive type for walk return code. Honour code.Neale Ranns1-9/+6
Type: improvement Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Change-Id: I487e698555545fce85d02d55deaaf7bb0007e388
2019-07-19fib: FIB Entry trackingNeale Ranns1-3/+4
Instead of all clients directly RR sourcing the entry they are tracking, use a deidcated 'tracker' object. This tracker object is a entry delegate and a child of the entry. The clients are then children of the tracker. The benefit of this aproach is that each time a new client tracks the entry it doesn't RR source it. When an entry is sourced all its children are updated. Thus, new clients tracking an entry is O(n^2). With the tracker as indirection, the entry is sourced only once. Type: feature Change-Id: I5b80bdda6c02057152e5f721e580e786cd840a3b Signed-off-by: Neale Ranns <nranns@cisco.com>
2019-03-28Typos. A bunch of typos I've been collecting.Paul Vinciguerra1-1/+1
Change-Id: I53ab8d17914e6563110354e4052109ac02bf8f3b Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2018-07-30FIB: return entry prefix by const reference to avoid the copyNeale Ranns1-4/+4
Change-Id: I09b8406168df4b6b28df3ede24ee839681be0195 Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
2017-04-06BFD-FIB interactionsNeale Ranns1-45/+0
- single-hop BFD: attach a delegate to the appropriate adjacency - multi-hop BFD [not supported yet]: attach a delegate to the FIB entry. adjacency/fib_entry state tracks the BFD session state. when the state is down the object does not contribute forwarding hence and hence dependent objects will not use it. For example, if a route is ECMP via two adjacencies and one of them is BFD down, then only the other is used to forward (i.e. we don't drop half the traffic). Change-Id: I0ef53e20e73b067001a132cd0a3045408811a822 Signed-off-by: Neale Ranns <nranns@cisco.com>
2016-12-28Reorganize source tree to use single autotools instanceDamjan Marion1-0/+225
Change-Id: I7b51f88292e057c6443b12224486f2d0c9f8ae23 Signed-off-by: Damjan Marion <damarion@cisco.com>
' href='#n202'>202 203 204 205 206 207 208 209 210
= Manual build

link:release_notes.html[< Home]

== Prerequisites
Building Hc2vpp project requires:

* Java 8
* Maven (version 3.2.5 and above should be fine)
* Properly set maven settings(displayed below) to access nexus.fd.io

== Obtain the hc2vpp source code
TIP: Make sure you have https://wiki.fd.io/view/DEV/Setting_up_Gerrit[registered your ssh key with gerrit].

[subs="+attributes"]
 git clone ssh://[username]@gerrit.fd.io:29418/hc2vpp
 cd hc2vpp
 git checkout {project-branch}

== Building the code
Make sure all the prerequisites are installed.

NOTE: To make sure fresh hc2vpp build is compatible with VPP, building VPP is also required to make sure the same JVpp version is used preventing out-of-sync exceptions. In case only hc2vpp needs to be built, skip Building VPP section.

=== Building VPP
Clone VPP according to: https://gerrit.fd.io/r/#/admin/projects/vpp and checkout {project-branch} branch

Dive into VPP's build-root folder:

 cd vpp/build-root/

Build VPP:

 make distclean && ./bootstrap.sh && make V=0 PLATFORM=vpp TAG=vpp install-deb

Install VPP:

 sudo dpkg -i *.deb

Start VPP:

 sudo start vpp

Install JVpp into local maven repository to make hc2vpp pick up the same JVpp version

[subs="+attributes"]
 cd build-vpp-native/vpp-api/java/
 mvn install:install-file -Dfile=jvpp-registry-{project-vpp-version}.jar -DgroupId=io.fd.vpp     -DartifactId=jvpp-registry -Dversion={project-vpp-snapshot-version} -Dpackaging=jar
 mvn install:install-file -Dfile=jvpp-core-{project-vpp-version}.jar -DgroupId=io.fd.vpp     -DartifactId=jvpp-core -Dversion={project-vpp-snapshot-version}-Dpackaging=jar
 cd ../../plugins/nat-plugin/
 mvn install:install-file -Dfile=jvpp-nat-{project-nat-version}.jar -DgroupId=io.fd.vpp     -DartifactId=jvpp-nat -Dversion={project-nat-snapshot-version} -Dpackaging=jar

Now current Vpp is up and running and prepared for integration with HC.

=== Building hc2vpp
Now hc2vpp can be built and it will use latest JVpp produced during VPP build.

==== Setup settings.xml
Put the following in your ~/.m2/settings.xml:

[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<!-- vi: set et smarttab sw=2 tabstop=2: -->
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <profiles>
    <profile>
      <id>fd.io-release</id>
      <repositories>
        <repository>
          <id>fd.io-mirror</id>
          <name>fd.io-mirror</name>
          <url>https://nexus.fd.io/content/groups/public/</url>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>fd.io-mirror</id>
          <name>fd.io-mirror</name>
          <url>https://nexus.fd.io/content/repositories/public/</url>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>

    <profile>
      <id>fd.io-snapshots</id>
      <repositories>
        <repository>
          <id>fd.io-snapshot</id>
          <name>fd.io-snapshot</name>
          <url>https://nexus.fd.io/content/repositories/fd.io.snapshot/</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>fd.io-snapshot</id>
          <name>fd.io-snapshot</name>
          <url>https://nexus.fd.io/content/repositories/fd.io.snapshot/</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    <profile>
      <id>opendaylight-snapshots</id>
      <repositories>
        <repository>
          <id>opendaylight-snapshot</id>
          <name>opendaylight-snapshot</name>
          <url>https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>opendaylight-shapshot</id>
          <name>opendaylight-snapshot</name>
          <url>https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>fd.io-release</activeProfile>
    <activeProfile>fd.io-snapshots</activeProfile>
    <activeProfile>opendaylight-snapshots</activeProfile>
  </activeProfiles>
</settings>
----

==== Building hc2vpp
cd hc2vpp/

 mvn clean install

[NOTE]
=====
To perform quick build(no tests, no checks, no docs) run:

 mvn clean install -DskipTests -Dcheckstyle.skip -Dmaven.javadoc.skip=true -Djacoco.skip
=====

Now hc2vpp can be run with:

[subs="+attributes"]
 sudo sh vpp-integration/minimal-distribution/target/vpp-integration-distribution-{project-version}-hc/vpp-integration-distribution-{project-version}/honeycomb

=== Building packages
After the code has been built, you can build an RPM or DEB package for hc2vpp.

==== RPM
Export build number variable, e.g.:

 export BUILD_NUMBER=33

Run package building script from:

 packaging/rpm/rpmbuild.sh

==== DEB
Export build number variable, e.g.:

 export BUILD_NUMBER=33

Run package building script from:

 packaging/deb/xenial/debuild.sh

or

 packaging/deb/trusty/debuild.sh