diff options
-rw-r--r-- | COMMUNITY.md | 36 | ||||
-rw-r--r-- | bgpd/bgpd.c | 4 | ||||
-rw-r--r-- | bgpd/rfapi/rfapi_import.c | 3 | ||||
-rw-r--r-- | bgpd/rfapi/vnc_import_bgp.c | 17 | ||||
-rw-r--r-- | doc/git_branches.svg | 3 | ||||
-rw-r--r-- | lib/memory.c | 26 | ||||
-rw-r--r-- | lib/memory.h | 26 | ||||
-rw-r--r-- | lib/qobj.h | 26 | ||||
-rw-r--r-- | ospfd/ospf_bfd.c | 10 | ||||
-rw-r--r-- | ospfd/ospf_vty.c | 6 | ||||
-rw-r--r-- | pimd/pim_vty.c | 2 | ||||
-rw-r--r-- | redhat/quagga.spec.in | 2 | ||||
-rw-r--r-- | render_md.py | 25 | ||||
-rw-r--r-- | zebra/interface.c | 5 |
14 files changed, 116 insertions, 75 deletions
diff --git a/COMMUNITY.md b/COMMUNITY.md index 9539c7e57..0cc8e8d1c 100644 --- a/COMMUNITY.md +++ b/COMMUNITY.md @@ -1,10 +1,14 @@ # Developing for PROJECT (DRAFT) +[TOC] ## Git Structure The master Git for PROJECT resides on Github at -https://github.com/PROJECT/XXX +[https://github.com/PROJECT/XXX](https://github.com/PROJECT/XXX) + +![git branches continually merging to the left from 3 lanes; float-right](doc/git_branches.svg +"git branch mechanics") There are 3 main branches for development and a release branch for each major release. @@ -39,14 +43,14 @@ preference on Markdown. ## Before Submitting your changes -* Format code (see Code Styling requirements) -* Verify and acknowledge license (see License for contributions) +* Format code (see [Code Styling requirements](#code-styling-requirements)) +* Verify and acknowledge license (see [License for contributions](#license-for-contributions)) * Test building with various configurations: - * `buildtest.sh` + * `buildtest.sh` * Verify building source distribution: - * `make dist` (and try rebuilding from the resulting tar file) + * `make dist` (and try rebuilding from the resulting tar file) * Run DejaGNU unit tests: - * `make test` + * `make test` * Document Regression Runs and plans for continued maintenance of the feature ### Changelog @@ -118,7 +122,7 @@ website](http://www.linuxfoundation.org/content/how-participate-linux-community- to be a helpful resource. -#### Code submission - Github Pull Request (Strongly Preferred) +### Code submission - Github Pull Request (Strongly Preferred) Preferred submission of code is by using a Github Pull Request against the Develop branch. Code submitted by Pull Request will have an email generated to @@ -133,7 +137,7 @@ Further (manual) code review and discussion happens after the merge into the develop branch. -#### Code submission - Mailing Patch to PROJECT-Devel list +### Code submission - Mailing Patch to PROJECT-Devel list As an alternative submission, a patch can be mailed to the PROJECT-Devel mailing list. Preferred way to send the patch is using git send-mail. Patches @@ -144,7 +148,7 @@ the patch is then merged into the develop branch. Further (manual) code review and discussion happens after the merge into the develop branch. -Sending patch to mailing list +#### Sending patch to mailing list The recommended way to send the patch (or series of NN patches) to the list is by using ‘git send-email’ as follows (assuming they are the most recent NN @@ -172,10 +176,11 @@ and will allow your changes to merge faster * You should automatically receive an email with the test results within less than 2 hrs of the submission. If you don’t get the email, then check status on the github pull request (if submitted by pull request) or on - Patchwork at https://patchwork.PROJECT.org (if submitted as patch to - mailing list). + Patchwork at + [https://patchwork.PROJECT.org](https://patchwork.PROJECT.org) (if + submitted as patch to mailing list). * Please notify PROJECT-Devel mailing list if you think something doesn’t - work + work * If the tests failed: * In general, expect the community to ignore the submission until the tests pass. @@ -202,8 +207,9 @@ and will allow your changes to merge faster ### File header required for new files added -New files need to have a Copyright header (see License for contributions above) -added to the file. Preferred form of the header is as follows: +New files need to have a Copyright header (see [License for +contributions](#license-for-contributions) above) added to the file. Preferred +form of the header is as follows: ``` /* @@ -225,6 +231,8 @@ added to the file. Preferred form of the header is as follows: Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + +#include <zebra.h> ``` ### Adding Copyright claims to already existing file diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index e8bdd08a4..50d412633 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -1018,8 +1018,6 @@ peer_free (struct peer *peer) { assert (peer->status == Deleted); - bgp_unlock(peer->bgp); - /* this /ought/ to have been done already through bgp_stop earlier, * but just to be sure.. */ @@ -1085,6 +1083,8 @@ peer_free (struct peer *peer) bfd_info_free(&(peer->bfd_info)); + bgp_unlock(peer->bgp); + memset (peer, 0, sizeof (struct peer)); XFREE (MTYPE_BGP_PEER, peer); diff --git a/bgpd/rfapi/rfapi_import.c b/bgpd/rfapi/rfapi_import.c index 8783024f1..77da4f9ee 100644 --- a/bgpd/rfapi/rfapi_import.c +++ b/bgpd/rfapi/rfapi_import.c @@ -4414,7 +4414,8 @@ rfapiProcessPeerDown (struct peer *peer) */ bgp = bgp_get_default (); /* assume 1 instance for now */ - assert (bgp); + if (!bgp) + return; h = bgp->rfapi; assert (h); diff --git a/bgpd/rfapi/vnc_import_bgp.c b/bgpd/rfapi/vnc_import_bgp.c index 4215ce2bf..dc2640ab9 100644 --- a/bgpd/rfapi/vnc_import_bgp.c +++ b/bgpd/rfapi/vnc_import_bgp.c @@ -208,12 +208,17 @@ prefix_bag_free (void *pb) static void print_rhn_list (const char *tag1, const char *tag2) { - struct bgp *bgp = bgp_get_default (); - struct skiplist *sl = bgp->rfapi->resolve_nve_nexthop; + struct bgp *bgp; + struct skiplist *sl; struct skiplistnode *p; struct prefix_bag *pb; int count = 0; + bgp = bgp_get_default (); + if (!bgp) + return; + + sl = bgp->frapi->resolve_nve_nexthop; if (!sl) { zlog_debug ("%s: %s: RHN List is empty", (tag1 ? tag1 : ""), @@ -251,6 +256,8 @@ vnc_rhnck (char *tag) struct skiplistnode *p; bgp = bgp_get_default (); + if (!bgp) + return; sl = bgp->rfapi->resolve_nve_nexthop; if (!sl) @@ -1798,6 +1805,9 @@ vnc_import_bgp_exterior_add_route_it ( struct bgp *bgp_default = bgp_get_default (); afi_t afi = family2afi (prefix->family); + if (!bgp_default) + return; + h = bgp_default->rfapi; hc = bgp_default->rfapi_cfg; @@ -1992,6 +2002,9 @@ vnc_import_bgp_exterior_del_route ( afi_t afi = family2afi (prefix->family); struct bgp *bgp_default = bgp_get_default (); + if (!bgp_default) + return; + memset (&pfx_orig_nexthop, 0, sizeof (struct prefix)); /* keep valgrind happy */ h = bgp_default->rfapi; diff --git a/doc/git_branches.svg b/doc/git_branches.svg new file mode 100644 index 000000000..3943eeacc --- /dev/null +++ b/doc/git_branches.svg @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" viewBox="52,37,407,656" width="407" height="656" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g><path fill="none" stroke="#008000" stroke-width="8" d="M288,252 L288,98.125"/><path fill="#008000" d="M277,99.5 L288,72 L299,99.5"/></g><path fill="none" stroke="#008000" stroke-width="8" d="M288.084,324 L216,288"/><g><path fill="none" stroke="#000100" stroke-width="8" d="M216,98.125 L216,684"/><path fill="#000100" d="M205,99.5 L216,72 L227,99.5"/><path fill="#000100" d="M225.625,692.25 L216,684 L206.375,692.25 L206.375,662 L216,653.75 L225.625,662"/></g><path fill="none" stroke="#f00" stroke-width="8" d="M216,648 L144,612"/><path fill="none" stroke="#f00" stroke-width="8" d="M216,432 L144,396"/><path fill="none" stroke="#008000" stroke-width="8" d="M216,612 L288.084,648"/><path fill="none" stroke="#008000" stroke-width="8" d="M216,468 L288.084,504"/><path fill="none" stroke="#008000" stroke-width="8" d="M288.084,180 L216,144"/><text fill="#f00" font-family="Helvetica" font-weight="bold" font-size="12" text-anchor="middle" transform="matrix(1,0,0,1,146.988,431.607)" xml:space="preserve"><tspan>1.0</tspan><tspan x="0" y="16">Release</tspan><tspan x="0" y="32">Branch</tspan></text><path fill="none" stroke="#008000" stroke-width="8" d="M288.084,396 L216,360"/><path fill="none" stroke="#008000" stroke-width="8" d="M288.084,432 L216,396"/><path fill="none" stroke="#f00" stroke-width="8" d="M216.832,396 L144,360"/><path fill="none" stroke="#f00" stroke-width="8" d="M215.832,360 L144,324"/><path fill="#fffffe" stroke="#000100" d="M224,648 C224,652.418,220.418,656,216,656 C211.582,656,208,652.418,208,648 C208,643.582,211.582,640,216,640 C220.418,640,224,643.582,224,648 Z"/><path fill="#fffffe" stroke="#000100" d="M224,468 C224,472.418,220.418,476,216,476 C211.582,476,208,472.418,208,468 C208,463.582,211.582,460,216,460 C220.418,460,224,463.582,224,468 Z"/><path fill="#fffffe" stroke="#000100" d="M224,432 C224,436.418,220.418,440,216,440 C211.582,440,208,436.418,208,432 C208,427.582,211.582,424,216,424 C220.418,424,224,427.582,224,432 Z"/><path fill="#fffffe" stroke="#000100" d="M224,612 C224,616.418,220.418,620,216,620 C211.582,620,208,616.418,208,612 C208,607.582,211.582,604,216,604 C220.418,604,224,607.582,224,612 Z"/><path fill="#fffffe" stroke="#000100" d="M224,144 C224,148.418,220.418,152,216,152 C211.582,152,208,148.418,208,144 C208,139.582,211.582,136,216,136 C220.418,136,224,139.582,224,144 Z"/><path fill="#fffffe" stroke="#000100" d="M296,144 C296,148.418,292.418,152,288,152 C283.582,152,280,148.418,280,144 C280,139.582,283.582,136,288,136 C292.418,136,296,139.582,296,144 Z"/><path fill="#fffffe" stroke="#000100" d="M224,360 C224,364.418,220.418,368,216,368 C211.582,368,208,364.418,208,360 C208,355.582,211.582,352,216,352 C220.418,352,224,355.582,224,360 Z"/><path fill="#fffffe" stroke="#000100" d="M224,396 C224,400.418,220.418,404,216,404 C211.582,404,208,400.418,208,396 C208,391.582,211.582,388,216,388 C220.418,388,224,391.582,224,396 Z"/><text fill="#000100" font-family="Helvetica" font-weight="bold" font-size="12" text-anchor="middle" transform="matrix(1,0,0,1,216.312,49.5293)" xml:space="preserve"><tspan>Master</tspan><tspan x="0" y="16">(Stable)</tspan></text><g><path fill="none" stroke="#008000" stroke-width="8" d="M288,684 L288,432"/><path fill="#008000" d="M297.625,692.25 L288,684 L278.375,692.25 L278.375,662 L288,653.75 L297.625,662"/></g><path fill="none" stroke="#008000" stroke-width="8" d="M288,432 L288,252"/><path fill="#fffffe" stroke="#000100" d="M296,648 C296,652.418,292.418,656,288,656 C283.582,656,280,652.418,280,648 C280,643.582,283.582,640,288,640 C292.418,640,296,643.582,296,648 Z"/><text fill="#008000" font-family="Helvetica" font-weight="bold" font-size="12" text-anchor="middle" transform="matrix(1,0,0,1,287.841,62.2383)" xml:space="preserve"><tspan>Develop</tspan></text><g><path fill="none" stroke="#f00" stroke-width="8" d="M144.832,612 L144.832,494.125"/><path fill="#f00" d="M133.832,495.5 L144.832,468 L155.832,495.5"/></g><g><path fill="none" stroke="#f00" stroke-width="8" d="M144.832,396 L144.832,206.125"/><path fill="#f00" d="M133.832,207.5 L144.832,180 L155.832,207.5"/></g><text fill="#f00" font-family="Helvetica" font-weight="bold" font-size="12" text-anchor="middle" transform="matrix(1,0,0,1,146.988,142.607)" xml:space="preserve"><tspan>1.1</tspan><tspan x="0" y="16">Release</tspan><tspan x="0" y="32">Branch</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,55,615.76)" xml:space="preserve"><tspan>Version 1.</tspan><tspan>0.a1</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,55.7734,399.76)" xml:space="preserve"><tspan>Version 1.1.a1</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,55,363.76)" xml:space="preserve"><tspan>Version 1.1.a2</tspan></text><path fill="#fffffe" stroke="#000100" d="M152,612 C152,616.418,148.418,620,144,620 C139.582,620,136,616.418,136,612 C136,607.582,139.582,604,144,604 C148.418,604,152,607.582,152,612 Z"/><path fill="#fffffe" stroke="#000100" d="M152,396 C152,400.418,148.418,404,144,404 C139.582,404,136,400.418,136,396 C136,391.582,139.582,388,144,388 C148.418,388,152,391.582,152,396 Z"/><path fill="#fffffe" stroke="#000100" d="M152,360 C152,364.418,148.418,368,144,368 C139.582,368,136,364.418,136,360 C136,355.582,139.582,352,144,352 C148.418,352,152,355.582,152,360 Z"/><path fill="#fffffe" stroke="#000100" d="M152,324 C152,328.418,148.418,332,144,332 C139.582,332,136,328.418,136,324 C136,319.582,139.582,316,144,316 C148.418,316,152,319.582,152,324 Z"/><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,55.7734,327.76)" xml:space="preserve"><tspan>Version 1.</tspan><tspan>1.b1</tspan></text><path fill="#fffffe" stroke="#000100" d="M296,612 C296,616.418,292.418,620,288,620 C283.582,620,280,616.418,280,612 C280,607.582,283.582,604,288,604 C292.418,604,296,607.582,296,612 Z"/><path fill="#fffffe" stroke="#000100" d="M296,540 C296,544.418,292.418,548,288,548 C283.582,548,280,544.418,280,540 C280,535.582,283.582,532,288,532 C292.418,532,296,535.582,296,540 Z"/><path fill="#fffffe" stroke="#000100" d="M296,576 C296,580.418,292.418,584,288,584 C283.582,584,280,580.418,280,576 C280,571.582,283.582,568,288,568 C292.418,568,296,571.582,296,576 Z"/><path fill="#fffffe" stroke="#000100" d="M296,467 C296,471.418,292.418,475,288,475 C283.582,475,280,471.418,280,467 C280,462.582,283.582,459,288,459 C292.418,459,296,462.582,296,467 Z"/><path fill="#fffffe" stroke="#000100" d="M296,503 C296,507.418,292.418,511,288,511 C283.582,511,280,507.418,280,503 C280,498.582,283.582,495,288,495 C292.418,495,296,498.582,296,503 Z"/><path fill="#fffffe" stroke="#000100" d="M296,396 C296,400.418,292.418,404,288,404 C283.582,404,280,400.418,280,396 C280,391.582,283.582,388,288,388 C292.418,388,296,391.582,296,396 Z"/><path fill="#fffffe" stroke="#000100" d="M296,432 C296,436.418,292.418,440,288,440 C283.582,440,280,436.418,280,432 C280,427.582,283.582,424,288,424 C292.418,424,296,427.582,296,432 Z"/><path fill="#fffffe" stroke="#000100" d="M296,324 C296,328.418,292.418,332,288,332 C283.582,332,280,328.418,280,324 C280,319.582,283.582,316,288,316 C292.418,316,296,319.582,296,324 Z"/><path fill="#fffffe" stroke="#000100" d="M296,360 C296,364.418,292.418,368,288,368 C283.582,368,280,364.418,280,360 C280,355.582,283.582,352,288,352 C292.418,352,296,355.582,296,360 Z"/><path fill="#fffffe" stroke="#000100" d="M296,251 C296,255.418,292.418,259,288,259 C283.582,259,280,255.418,280,251 C280,246.582,283.582,243,288,243 C292.418,243,296,246.582,296,251 Z"/><path fill="#fffffe" stroke="#000100" d="M296,287 C296,291.418,292.418,295,288,295 C283.582,295,280,291.418,280,287 C280,282.582,283.582,279,288,279 C292.418,279,296,282.582,296,287 Z"/><path fill="#fffffe" stroke="#000100" d="M296,179 C296,183.418,292.418,187,288,187 C283.582,187,280,183.418,280,179 C280,174.582,283.582,171,288,171 C292.418,171,296,174.582,296,179 Z"/><path fill="#fffffe" stroke="#000100" d="M296,215 C296,219.418,292.418,223,288,223 C283.582,223,280,219.418,280,215 C280,210.582,283.582,207,288,207 C292.418,207,296,210.582,296,215 Z"/><g><path fill="none" stroke="#666" stroke-width="4" d="M432,540 L304.625,540"/><path fill="#666" d="M305.5,547 L288,540 L305.5,533"/></g><g><path fill="none" stroke="#666" stroke-width="4" d="M432,504 L304.625,504"/><path fill="#666" d="M305.5,511 L288,504 L305.5,497"/></g><g><path fill="none" stroke="#666" stroke-width="4" d="M432,468 L304.625,468"/><path fill="#666" d="M305.5,475 L288,468 L305.5,461"/></g><g><path fill="none" stroke="#666" stroke-width="4" d="M432,432 L304.625,432"/><path fill="#666" d="M305.5,439 L288,432 L305.5,425"/></g><g><path fill="none" stroke="#666" stroke-width="4" d="M432,396 L304.625,396"/><path fill="#666" d="M305.5,403 L288,396 L305.5,389"/></g><g><path fill="none" stroke="#666" stroke-width="4" d="M432,360 L304.625,360"/><path fill="#666" d="M305.5,367 L288,360 L305.5,353"/></g><g><path fill="none" stroke="#666" stroke-width="4" d="M432,324 L304.625,324"/><path fill="#666" d="M305.5,331 L288,324 L305.5,317"/></g><g><path fill="none" stroke="#666" stroke-width="4" d="M432,288 L304.625,288"/><path fill="#666" d="M305.5,295 L288,288 L305.5,281"/></g><g><path fill="none" stroke="#666" stroke-width="4" d="M432,252 L304.625,252"/><path fill="#666" d="M305.5,259 L288,252 L305.5,245"/></g><g><path fill="none" stroke="#666" stroke-width="4" d="M432,216 L304.625,216"/><path fill="#666" d="M305.5,223 L288,216 L305.5,209"/></g><g><path fill="none" stroke="#666" stroke-width="4" d="M404,180 L304.625,180"/><path fill="#666" d="M305.5,187 L288,180 L305.5,173"/></g><g><path fill="none" stroke="#666" stroke-width="4" d="M432,180 L304.625,180"/><path fill="#666" d="M305.5,187 L288,180 L305.5,173"/></g><g><path fill="none" stroke="#666" stroke-width="4" d="M432,144 L304.625,144"/><path fill="#666" d="M305.5,151 L288,144 L305.5,137"/></g><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,535)" xml:space="preserve"><tspan>Patch Email (Patchwork)</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,499)" xml:space="preserve"><tspan>Github Pull Request</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,463)" xml:space="preserve"><tspan>Github Pull Request</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,427)" xml:space="preserve"><tspan>Patch Email (Patchwork)</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,391)" xml:space="preserve"><tspan>Patch Email (Patchwork)</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,355)" xml:space="preserve"><tspan>Github Pull Request</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,319)" xml:space="preserve"><tspan>Github Pull Request</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,283)" xml:space="preserve"><tspan>Github Pull Request</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,247)" xml:space="preserve"><tspan>Patch Email (Patchwork)</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,211)" xml:space="preserve"><tspan>Github Pull Request</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,175)" xml:space="preserve"><tspan>Github Pull Request</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,139)" xml:space="preserve"><tspan>Github Pull Request</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,607)" xml:space="preserve"><tspan>Github Pull Request</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,571)" xml:space="preserve"><tspan>Github Pull Request</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,324,571)" xml:space="preserve"><tspan>Github Pull Request</tspan></text><g><path fill="none" stroke="#666" stroke-width="4" d="M432,612 L304.28,612"/><path fill="#666" d="M305.155,619 L287.655,612 L305.155,605"/></g><g><path fill="none" stroke="#666" stroke-width="4" d="M432,576 L304.625,576"/><path fill="#666" d="M305.5,583 L288,576 L305.5,569"/></g><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,56,581)" xml:space="preserve"><tspan>Version 1.</tspan><tspan>0.a2</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,56,545)" xml:space="preserve"><tspan>Version 1.</tspan><tspan>0.b1</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,56,509)" xml:space="preserve"><tspan>Version 1.</tspan><tspan>0.0</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,55.7734,292.76)" xml:space="preserve"><tspan>Version 1.1.0</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,55,256.76)" xml:space="preserve"><tspan>Version 1.1.1</tspan></text><text fill="#000100" font-family="Helvetica" font-size="12" transform="matrix(1,0,0,1,55.7734,220.76)" xml:space="preserve"><tspan>Version 1.</tspan><tspan>1.2</tspan></text><path fill="none" stroke="#f00" stroke-width="8" d="M216,612 L144,576"/><path fill="none" stroke="#f00" stroke-width="8" d="M216,576 L144,540"/><path fill="none" stroke="#f00" stroke-width="8" d="M216,540 L144,504"/><path fill="none" stroke="#f00" stroke-width="8" d="M216,324 L144,288"/><path fill="none" stroke="#f00" stroke-width="8" d="M216,288 L144,252"/><path fill="none" stroke="#f00" stroke-width="8" d="M216,252 L144,216"/><path fill="#fffffe" stroke="#000100" d="M152,575 C152,579.418,148.418,583,144,583 C139.582,583,136,579.418,136,575 C136,570.582,139.582,567,144,567 C148.418,567,152,570.582,152,575 Z"/><path fill="#fffffe" stroke="#000100" d="M152,539 C152,543.418,148.418,547,144,547 C139.582,547,136,543.418,136,539 C136,534.582,139.582,531,144,531 C148.418,531,152,534.582,152,539 Z"/><path fill="#fffffe" stroke="#000100" d="M152,503 C152,507.418,148.418,511,144,511 C139.582,511,136,507.418,136,503 C136,498.582,139.582,495,144,495 C148.418,495,152,498.582,152,503 Z"/><path fill="#fffffe" stroke="#000100" d="M152,288 C152,292.418,148.418,296,144,296 C139.582,296,136,292.418,136,288 C136,283.582,139.582,280,144,280 C148.418,280,152,283.582,152,288 Z"/><path fill="#fffffe" stroke="#000100" d="M152,252 C152,256.418,148.418,260,144,260 C139.582,260,136,256.418,136,252 C136,247.582,139.582,244,144,244 C148.418,244,152,247.582,152,252 Z"/><path fill="#fffffe" stroke="#000100" d="M152,216 C152,220.418,148.418,224,144,224 C139.582,224,136,220.418,136,216 C136,211.582,139.582,208,144,208 C148.418,208,152,211.582,152,216 Z"/><path fill="#fffffe" stroke="#000100" d="M224,576 C224,580.418,220.418,584,216,584 C211.582,584,208,580.418,208,576 C208,571.582,211.582,568,216,568 C220.418,568,224,571.582,224,576 Z"/><path fill="#fffffe" stroke="#000100" d="M224,540 C224,544.418,220.418,548,216,548 C211.582,548,208,544.418,208,540 C208,535.582,211.582,532,216,532 C220.418,532,224,535.582,224,540 Z"/><path fill="#fffffe" stroke="#000100" d="M224,324 C224,328.418,220.418,332,216,332 C211.582,332,208,328.418,208,324 C208,319.582,211.582,316,216,316 C220.418,316,224,319.582,224,324 Z"/><path fill="#fffffe" stroke="#000100" d="M224,252 C224,256.418,220.418,260,216,260 C211.582,260,208,256.418,208,252 C208,247.582,211.582,244,216,244 C220.418,244,224,247.582,224,252 Z"/><path fill="#fffffe" stroke="#000100" d="M224,288 C224,292.418,220.418,296,216,296 C211.582,296,208,292.418,208,288 C208,283.582,211.582,280,216,280 C220.418,280,224,283.582,224,288 Z"/></svg> diff --git a/lib/memory.c b/lib/memory.c index 99b191c2b..f17915486 100644 --- a/lib/memory.c +++ b/lib/memory.c @@ -1,23 +1,17 @@ /* * Copyright (c) 2015-16 David Lamparter, for NetDEF, Inc. * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include <zebra.h> diff --git a/lib/memory.h b/lib/memory.h index d287f229f..477a6162d 100644 --- a/lib/memory.h +++ b/lib/memory.h @@ -1,23 +1,17 @@ /* * Copyright (c) 2015-16 David Lamparter, for NetDEF, Inc. * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef _QUAGGA_MEMORY_H diff --git a/lib/qobj.h b/lib/qobj.h index 4a5c0c01e..4c326731e 100644 --- a/lib/qobj.h +++ b/lib/qobj.h @@ -1,23 +1,17 @@ /* * Copyright (c) 2015-16 David Lamparter, for NetDEF, Inc. * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef _QOBJ_H diff --git a/ospfd/ospf_bfd.c b/ospfd/ospf_bfd.c index 803dc923e..b6c871b6e 100644 --- a/ospfd/ospf_bfd.c +++ b/ospfd/ospf_bfd.c @@ -369,10 +369,16 @@ DEFUN (ip_ospf_bfd, "Enables BFD support\n") { struct interface *ifp = (struct interface *) vty->index; + struct ospf_if_params *params; + struct bfd_info *bfd_info; assert (ifp); - ospf_bfd_if_param_set (ifp, BFD_DEF_MIN_RX, BFD_DEF_MIN_TX, - BFD_DEF_DETECT_MULT, 1); + params = IF_DEF_PARAMS (ifp); + bfd_info = params->bfd_info; + + if (!bfd_info || ! CHECK_FLAG(bfd_info->flags, BFD_FLAG_PARAM_CFG)) + ospf_bfd_if_param_set (ifp, BFD_DEF_MIN_RX, BFD_DEF_MIN_TX, + BFD_DEF_DETECT_MULT, 1); return CMD_SUCCESS; } diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index d83684028..8662eb425 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -3097,8 +3097,10 @@ show_ip_ospf_common (struct vty *vty, struct ospf *ospf, u_char use_json) json_object *json_areas = NULL; if (use_json) - json = json_object_new_object(); - json_areas = json_object_new_object(); + { + json = json_object_new_object(); + json_areas = json_object_new_object(); + } if (ospf->instance) { diff --git a/pimd/pim_vty.c b/pimd/pim_vty.c index bc0f2c7e5..95792d5aa 100644 --- a/pimd/pim_vty.c +++ b/pimd/pim_vty.c @@ -148,7 +148,7 @@ int pim_interface_config_write(struct vty *vty) /* IF ip pim drpriority */ if (pim_ifp->pim_dr_priority != PIM_DEFAULT_DR_PRIORITY) { - vty_out(vty, " ip pim drpriority %d%s", pim_ifp->pim_dr_priority, + vty_out(vty, " ip pim drpriority %u%s", pim_ifp->pim_dr_priority, VTY_NEWLINE); ++writes; } diff --git a/redhat/quagga.spec.in b/redhat/quagga.spec.in index 4c35a8bf6..207889d92 100644 --- a/redhat/quagga.spec.in +++ b/redhat/quagga.spec.in @@ -489,7 +489,7 @@ rm -rf %{buildroot} %doc */*.sample* AUTHORS COPYING %doc doc/quagga.html %doc doc/mpls -%doc ChangeLog INSTALL NEWS README REPORTING-BUGS SERVICES TODO +%doc ChangeLog INSTALL NEWS README REPORTING-BUGS SERVICES %if 0%{?quagga_user:1} %dir %attr(751,%quagga_user,%quagga_user) %{_sysconfdir} %dir %attr(750,%quagga_user,%quagga_user) /var/log/quagga diff --git a/render_md.py b/render_md.py new file mode 100644 index 000000000..d2d1fb480 --- /dev/null +++ b/render_md.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# written 2016 by David Lamparter, placed in Public Domain. +import sys, markdown + +template = '''<html><head><meta charset="UTF-8"><style type="text/css"> +body { max-width: 45em; margin: auto; margin-top: 2em; margin-bottom: 2em; + font-family:Fira Sans,sans-serif; text-align: justify; } +pre, code { font-family:Fira Mono,monospace; } +pre > code { display: block; padding:0.5em; border:1px solid black; + background-color:#eee; color:#000; } +h2 { clear: both; margin-top: 3em; text-decoration: underline; } +h3 { clear: both; margin-top: 2em; font-weight: normal; font-style: italic; } +h4 { font-weight: normal; font-style: italic; } +img[alt~="float-right"] { float:right; margin-left:2em; margin-bottom:2em; } +</style></head><body> +%s +</body></html> +''' + +md = markdown.Markdown(extensions=['extra', 'toc']) + +for fn in sys.argv[1:]: + with open(fn, 'r') as ifd: + with open('%s.html' % (fn), 'w') as ofd: + ofd.write((template % (md.convert(ifd.read().decode('UTF-8')))).encode('UTF-8')) diff --git a/zebra/interface.c b/zebra/interface.c index ff9c0a301..91dbe5276 100644 --- a/zebra/interface.c +++ b/zebra/interface.c @@ -512,9 +512,10 @@ if_install_connected (struct interface *ifp) { for (ALL_LIST_ELEMENTS (ifp->connected, node, next, ifc)) { - p = ifc->address; - zebra_interface_address_add_update (ifp, ifc); + if (CHECK_FLAG(ifc->conf, ZEBRA_IFC_REAL)) + zebra_interface_address_add_update (ifp, ifc); + p = ifc->address; if (p->family == AF_INET) connected_up_ipv4 (ifp, ifc); else if (p->family == AF_INET6) |