Coder Social home page Coder Social logo

usnavalresearchlaboratory / ospf-mdr Goto Github PK

View Code? Open in Web Editor NEW
16.0 8.0 11.0 4.2 MB

OSPF MANET Designated Routers implementation (RFCs 5614, 5243, 5838)

Home Page: https://www.nrl.navy.mil/itd/ncs/products/ospf-manet

License: GNU General Public License v2.0

Makefile 0.23% C 55.15% C++ 43.06% Shell 0.20% M4 0.52% Awk 0.02% Perl 0.17% Python 0.38% Common Lisp 0.02% Hack 0.25%
manet ospf ospfv3

ospf-mdr's Introduction

Quagga is free software that manages various IPv4 and IPv6 routing
protocols.

Currently Quagga supports BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1,
RIPv2, and RIPng as well as very early support for IS-IS.
  
See the file INSTALL.quagga.txt for building and installation instructions.
  
See the file REPORTING-BUGS to report bugs.
  
Quagga is free software. See the file COPYING for copying conditions.

ospf-mdr's People

Contributors

b00ga avatar dpward avatar hdznrrd avatar tomgoff avatar weston-nrl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ospf-mdr's Issues

Header clash during build on Ubuntu 22.04

Tried master and 63f0759

make[2]: Entering directory '/home/coreuser/Documents/ospf-mdr/zebra'
gcc -DHAVE_CONFIG_H -DSYSCONFDIR=\"/usr/local/etc/quagga/\" -DMULTIPATH_NUM=1 -I. -I.. -I.. -I.. -I../lib    -fPIE  -ggdb -MT test_main.o -MD -MP -MF .deps/test_main.Tpo -c -o test_main.o test_main.c
mv -f .deps/test_main.Tpo .deps/test_main.Po
gcc -DHAVE_CONFIG_H -DSYSCONFDIR=\"/usr/local/etc/quagga/\" -DMULTIPATH_NUM=1 -I. -I.. -I.. -I.. -I../lib    -fPIE  -ggdb -MT zebra_rib.o -MD -MP -MF .deps/zebra_rib.Tpo -c -o zebra_rib.o zebra_rib.c
mv -f .deps/zebra_rib.Tpo .deps/zebra_rib.Po
gcc -DHAVE_CONFIG_H -DSYSCONFDIR=\"/usr/local/etc/quagga/\" -DMULTIPATH_NUM=1 -I. -I.. -I.. -I.. -I../lib    -fPIE  -ggdb -MT interface.o -MD -MP -MF .deps/interface.Tpo -c -o interface.o interface.c
In file included from interface.c:37:
../zebra/rtadv.h:71:8: error: redefinition of ‘struct nd_opt_adv_interval’
   71 | struct nd_opt_adv_interval {   /* Advertisement interval option */
      |        ^~~~~~~~~~~~~~~~~~~
In file included from ../lib/zebra.h:211,
                 from interface.c:23:
/usr/include/netinet/icmp6.h:329:8: note: originally defined here
  329 | struct nd_opt_adv_interval
      |        ^~~~~~~~~~~~~~~~~~~
make[2]: *** [Makefile:609: interface.o] Error 1
make[2]: Leaving directory '/home/coreuser/Documents/ospf-mdr/zebra'
make[1]: *** [Makefile:481: all-recursive] Error 1
make[1]: Leaving directory '/home/coreuser/Documents/ospf-mdr'
make: *** [Makefile:413: all] Error 2
6.2.0-1015-aws #15~22.04.1-Ubuntu SMP Fri Oct  6 21:37:24 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"

||/ Name           Version            Architecture Description
+++-==============-==================-============-===============================================================
ii  autoconf       2.71-2             all          automatic configure script builder
ii  automake       1:1.16.5-1.3       all          Tool for generating GNU Standards-compliant Makefiles
ii  gawk           1:5.1.0-1ubuntu0.1 amd64        GNU awk, a pattern scanning and processing language
ii  libtool        2.4.6-15build2     all          Generic library support script
ii  make           4.3-4.1build1      amd64        utility for directing compilation
ii  texinfo        6.8-4build1        amd64        Documentation system for on-line information and printed output
*   acaf5c4 (HEAD -> master, origin/master, origin/HEAD) Merge pull request #6 from dpward/vtysh-extract-xpimd
|\
| * 640855d vtysh: Limit files in xpimd/ processed by extract.pl
* |   e7ab6a0 Merge pull request #5 from dpward/xpimd-static-assert
|\ \
| |/
|/|
| * 6dbc6ec xpimd: Rename macro static_assert() to x_static_assert()
|/
* 9d7bec5 packaging: Update rpm spec file to work on newer systems.
*   63f0759 Merge pull request #4 from hdznrrd/master
|\
| * 0a55487 Added extern
|/
* f21688c ospf6d: Update the next-best route before removing a route.
* 

Better layer 2 path

Question on OSPF-MDR. I have 2 routers, but one has a better RF path. If I knew this a priori, I would be able to encode the better cost metric symmetrically at the router with the better RF path and also at its neighbors that point to it.

If someone in mid-scenario introduces the second router with a better RF path, I can encode the cost metric at the better source router a priori but its neighbors won't be configured to know and may continually select its worse peer as the neigbors see both as having equal cost. Assumption here is that at start time, all routers in have equal cost metrics prior to the new router being added. Only the new router knows that its RF path is best and has encoded its link metric cost to be lower than its peers.

Is there a preferred way that OSPF-MDR can advertise to neighbors that it has a better RF path (cheaper cost/metric) in order to achieve route symmetry?

Building an RPM

I did some work to try and build RPMs on Rocky Linux 8 and appear to have had success, I will still need to validate an install.

I followed these steps to build, after trying to determine all the various dependencies needed.

git clone https://github.com/USNavalResearchLaboratory/ospf-mdr.git
cd ospd-mdr
./bootstrap.sh
./configure
make -f quagga.rpm.mk

I did need to modify the spec file slightly to avoid error, not sure if this is something that should be updated in the repo or changed differently than I have.

diff --git a/redhat/quagga.spec.in b/redhat/quagga.spec.in
index 8230917..b4ae9cb 100644
--- a/redhat/quagga.spec.in
+++ b/redhat/quagga.spec.in
@@ -446,7 +446,7 @@ rm -rf $RPM_BUILD_ROOT
 %doc doc/quagga.html
 %doc doc/quagga.pdf
 %doc doc/mpls
-%doc ChangeLog INSTALL NEWS README REPORTING-BUGS SERVICES TODO RELEASE_NOTES.MobileRouting
+%doc ChangeLog INSTALL.quagga.txt NEWS README REPORTING-BUGS SERVICES TODO RELEASE_NOTES.MobileRouting
 %if 0%{?quagga_user:1}
 %dir %attr(751,%quagga_user,%quagga_user) %{_sysconfdir}
 %dir %attr(750,%quagga_user,%quagga_user) /var/log/quagga 
@@ -457,7 +457,7 @@ rm -rf $RPM_BUILD_ROOT
 %dir %attr(755,root,root) /usr/share/info
 %dir %attr(750,root,root) /var/run/quagga
 %endif
-%{_infodir}/*info*
+#%{_infodir}/*info*
 %{_mandir}/man*/*
 %{_sbindir}/zebra
 %{_sbindir}/ospfd

Building Deb Package

Working on trying to build a deb package in an Ubuntu 22.04 environment. I currently can get through building packages, but they are missing most of the executables, it only contains vtysh.

Basically these executables found in the rpm package:

/usr/sbin/babeld
/usr/sbin/bgpd
/usr/sbin/isisd
/usr/sbin/ospf6d
/usr/sbin/ospfd
/usr/sbin/ripd
/usr/sbin/ripngd
/usr/sbin/watchquagga
/usr/sbin/xpimd
/usr/sbin/zebra

I also currently need to patch a couple files to avoid issue:

diff --git a/debian/compat b/debian/compat
index 7ed6ff8..f599e28 100644
--- a/debian/compat
+++ b/debian/compat
@@ -1 +1 @@
-5
+10
diff --git a/debian/control.in b/debian/control.in
index f722ada..c427137 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -3,7 +3,7 @@ Section: net
 Priority: optional
 Maintainer: @MAINTAINER@ <@MAINTAINER_EMAIL@>
 Build-Depends: debhelper (>= 5), autotools-dev, gawk, libreadline-dev, pkg-config
-Build-Depends-Indep: texinfo (>= 4.7), imagemagick, texlive-latex-base, texlive-generic-recommended, groff
+Build-Depends-Indep: texinfo (>= 4.7), imagemagick, texlive-latex-base, texlive-plain-generic, groff
 Standards-Version: 3.8.4
 Homepage: http://www.nrl.navy.mil/itd/ncs/products/ospf-manet

I am building it like so, with what I believe are enough of the right dependencies to avoid error

git clone https://github.com/USNavalResearchLaboratory/ospf-mdr.git
cd ospf-mdr
git apply /opt/ospf-deb.patch
./bootstrap.sh
./configure
make -f quagga.deb.mk build

Any help would be appreciated.

RPM instead of re-building

I run the following two commands to install ospf:

./bootstrap.sh
./configure --disable-doc --enable-user=root --enable-group=root --with-cflags=-ggdb --sysconfdir=/usr/local/etc/quagga --enable-vtysh --localstatedir=/var/run/quagga
make -j8
make install

I am wondering if there is an RPM (either published or that I can generate) which I could use in future installations so I don't need to redo this compilation?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.