diff options
-rw-r--r-- | HACKING | 200 | ||||
-rw-r--r-- | bgpd/bgp_fsm.c | 3 | ||||
-rw-r--r-- | bgpd/bgp_vty.c | 26 | ||||
-rw-r--r-- | bgpd/bgpd.c | 9 | ||||
-rw-r--r-- | bgpd/bgpd.h | 1 | ||||
-rw-r--r-- | ospfd/ospf_vty.c | 2 | ||||
-rw-r--r-- | zebra/client_main.c | 2 |
7 files changed, 98 insertions, 145 deletions
@@ -1,5 +1,21 @@ -*- mode: text; -*- -$Id$ +$QuaggaId: Format:%an, %ai, %h$ $ + +Contents: + +* GUIDELINES FOR HACKING ON QUAGGA +* COMPILE-TIME CONDITIONAL CODE +* COMMIT MESSAGE +* HACKING THE BUILD SYSTEM +* RELEASE PROCEDURE +* SHARED LIBRARY VERSIONING +* RELEASE PROCEDURE +* TOOL VERSIONS +* SHARED LIBRARY VERSIONING +* PATCH SUBMISSION +* PATCH APPLICATION +* STABLE PLATFORMS AND DAEMONS +* IMPORT OR UPDATE VENDOR SPECIFIC ROUTING PROTOCOLS GUIDELINES FOR HACKING ON QUAGGA @@ -31,10 +47,17 @@ New code should have good comments, and changes to existing code should in many cases upgrade the comments when necessary for a reviewer to conclude that the change has no unintended consequences. -Each file in CVS should have the RCS keyword Id, somewhere very near -the top, commented out appropriately for the file type. Just add -<dollar>Id:<dollar>, replacing <dollar> with $. See line 2 of HACKING -for an example; on checkout :$ is expanded to include the value. +Each file in the Git repository should have a git format-placeholder (like +an RCS Id keyword), somewhere very near the top, commented out appropriately +for the file type. The placeholder used for Quagga (replacing <dollar> with +$) is: + + $QuaggaId: <dollar>Format:%an, %ai, %h<dollar> $ + +See line 2 of HACKING for an example; + +This placeholder string will be expanded out by the 'git archive' commands, +wihch is used to generate the tar archives for snapshots and releases. Please document fully the proper use of a new function in the header file in which it is declared. And please consult existing headers for @@ -98,44 +121,34 @@ rather than: Note that the former approach requires ensuring that SOME_SYMBOL will be defined (watch your AC_DEFINEs). -CHANGELOG +COMMIT MESSAGES -Add a ChangeLog entry whenever changing code, except for minor fixes -to a commit (with a ChangeLog entry) within the last few days. +The commit message should provide: -Most directories have a ChangeLog file; changes to code in that -directory should go in the per-directory ChangeLog. Global or -structural changes should also be mentioned in the top-level -ChangeLog. +* A suitable one-line summary as the very first line of the message, in the + form: -Certain directories do not contain project code, but contain project -meta-data, eg packaging information, changes to files in these -directory may not require the global ChangeLog to be updated (at the -discretion of the maintainer who usually maintains that meta-data). -Also, CVS meta-data such as cvsignore files do not require ChangeLog -updates, just a sane commit message. + [topic] high-level, one line summary -The ChangeLog should provide: + Where topic may be name of a subdirectory, and/or daemon. -* The date, in YYYY-MM-DD format -* The author's name and email. -* a short description of each change made +* An optional introduction, discussing the general intent of the change. +* a short description of each change made, preferably: * file by file - * function by function (use of "ditto" is allowed) + * function by function (use of "ditto", or globs is allowed) -(detailed discussion of non-obvious reasoning behind and/or -implications of a change should be made in comments in the code -concerned). The changelog optionally may have a (general) description, -to provide a short description of the general intent of the patch. The -reason for such itemised ChangeLogs is to encourage the author to -self-review every line of the patch, as well as provide reviewers an -index of which changes are intended, along with a short description for -each. E.g.: +to provide a short description of the general intent of the patch. -2012-05-29 Joe Bar <joe@example.com> +The reason for such itemised commit messages is to encourage the author to +self-review every line of the patch, as well as provide reviewers an index +of which changes are intended, along with a short description for each. +An example (where the general discussion is obviously somewhat redundant, +given the one-line summary): + +[zebra] Enhance frob FSM to detect loss of frob * (general) Add a new DOWN state to the frob state machine - to allow the barinator to detect loss of frob. + to allow the barinator to detect loss of frob. * frob.h: (struct frob) Add DOWN state flag. * frob.c: (frob_change) set/clear DOWN appropriately on state change. @@ -152,26 +165,35 @@ etc.), try to check that the following things still work: - out-of-tree builds The quagga.net site relies on make dist to work to generate snapshots. It -must work. Commong problems are to forget to have some additional file +must work. Common problems are to forget to have some additional file included in the dist, or to have a make rule refer to a source file without using the srcdir variable. RELEASE PROCEDURE - Tag the repository with release tag (follow existing conventions). +* Tag the apppropriate commit with a release tag (follow existing + conventions). [This enables recreating the release, and is just good CM practice.] - Check out the tag, and do a test build. +* Create a fresh tar archive of the quagga.net repository, and do a test + build: - In an empty directory, do a fresh checkout with -r <release-tag> - [This makes the dates in the tarball be the modified dates in CVS.] + git-clone git:///code.quagga.net/quagga.git quagga + git-archive --remote=git://code.quagga.net/quagga.git \ + --prefix=quagga-release/ master | tar -xf - + cd quagga-release - ./configure - make dist + ./update-autotools + ./configure + make + make dist -If any errors occur, move tags as needed and start over from the fresh -checkouts. Do not append to tarballs, as this has produced -non-standards-conforming tarballs in the past. +The tarball which 'make dist' creates is the tarball to be released! The +git-archive step ensures you're working with code corresponding to that in +the official repository, and also carries out keyword expansion. If any +errors occur, move tags as needed and start over from the fresh checkouts. +Do not append to tarballs, as this has produced non-standards-conforming +tarballs in the past. [TODO: collation of a list of deprecated commands. Possibly can be scripted to extract from vtysh/vtysh_cmd.c] @@ -209,13 +231,21 @@ installed together. PATCH SUBMISSION -* Send a clean diff against the head of CVS in unified diff format, eg by: - cvs <cvs opts> diff -upwb .... +* Send a clean diff against the 'master' branch of the quagga.git + repository, in unified diff format, preferably with the '-p' argument to + show C function affected by any chunk, and with the -w and -b arguments to + minimise changes. E.g: + + git diff -u -p -w -b mybranch..remotes/quagga.net/master -* Include ChangeLog and NEWS entries as appropriate before the patch - (or in it if you are 100% up to date). A good ChangeLog makes it easier to - review a patch, hence failure to include a good ChangeLog is prejudicial - to proper review of the patch, and hence the possibility of inclusion. + Or by using git-format-patch. + +* Not doing so is a definite hindrance to patch application. + +* Include NEWS entries as appropriate. + +* Please, please include an appropriate commit message with any emailed + patches. Doing so makes it easier to review a patch, and apply it. * Include only one semantic change or group of changes per patch. @@ -233,36 +263,19 @@ PATCH SUBMISSION dropped from the "should be checked" list. -PATCH APPLICATION TO CVS +PATCH APPLICATION * Only apply patches that meet the submission guidelines. -* If a patch is large (perhaps more than 100 new/changed lines), tag - the repository before and after the change with e.g. before-foo-fix - and after-foo-fix. - * If the patch might break something, issue a call for testing on the mailinglist. -* Give an appropriate commit message, prefixed with a category name - (either the name of the daemon, the library component or the general - topic) and a one-line short summary of the change as the first line, - suitable for use as a Subject in an email. The ChangeLog entry should - suffice as the body of the commit message, if it does not, then the - ChangeLog entry itself needs to be corrected. The commit message text - should be identical to that added to the ChangeLog message. (One - suggestion: when commiting, use your editor to read in the ChangeLog - and delete all previous ChangeLogs.) An example: - - ---------------------------------------------------------------- - [frob] Defangulator needs to specify frob - - 2012-05-12 Joe Bar <joe@example.com> - - * frobinate.c: (frob_lookup) fix NULL dereference - (defangulate) check whether frob is in state FROB_VALID - before defangulating. - ---------------------------------------------------------------- +* Give an appropriate commit message (see above), and use the --author + argument to git-commit, if required, to ensure proper attribution (you + should still be listed as committer) + +* Immediately after commiting, double-check (with git-log and/or gitk). If + there's a small mistake you can easily fix it with 'git commit --amend ..' * By committing a patch, you are responsible for fixing problems resulting from it (or backing it out). @@ -303,37 +316,14 @@ The source code of Quagga is based on two vendors: zebra_org (http://www.zebra.org/) isisd_sf (http://isisd.sf.net/) -[20041105: Is isisd.sf.netf still where isisd word is happening, or is -the quagga repo now the canonical place? The last tarball on sf is -two years old. --gdt] - -In order to import source code, the following procedure should be used: - -* Tag the Current Quagga CVS repository: - - cvs tag import_isisd_sf_20031223 - -* Import the source code into the Quagga's framework. You must not modified - this source code. It will be merged later. - - cd dir_isisd - export CVSROOT=:pserver:LOGIN@anoncvs.quagga.net:/var/cvsroot - cvs import quagga/isisd isisd_sf isisd_sf_20031223 - ---COMMENTS--- - Vendor: [isisd_sf] Sampo's ISISd from Sourceforge - Tag: [isisd_sf_20031217] Current CVS release - --- - -* Update your Quagga's directory: - - cd dir_quagga - cvs update -dP - - or - - cvs co -d quagga_isisd quagga - -* Merge the code, then commit: +To import code from further sources, e.g. for archival purposes without +necessarily having to review and/or fix some changeset, create a branch from +'master': - cvs commit + git checkout -b archive/foo master + <apply changes> + git commit -a "Joe Bar <joe@example.com>" + git push quagga archive/foo +presuming 'quagga' corresponds to a file in your .git/remotes with +configuration for the appropriate Quagga.net repository. diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index df1cfb7b..15bd8a6c 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -616,8 +616,7 @@ bgp_connect_success (struct peer *peer) zlog_debug ("%s passive open", peer->host); } - if (!CHECK_FLAG (peer->sflags, PEER_STATUS_ACCEPT_PEER) - || bgp_option_check (BGP_OPT_ALWAYS_OPEN)) + if (! CHECK_FLAG (peer->sflags, PEER_STATUS_ACCEPT_PEER)) bgp_open_send (peer); return 0; diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 90867373..54f11701 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -279,28 +279,6 @@ DEFUN (no_bgp_config_type, return CMD_SUCCESS; } -DEFUN_HIDDEN (bgp_open_accept, - bgp_open_accept_cmd, - "bgp open-accept", - BGP_STR - "Send OPEN immediately on accepted connections\n") -{ - bgp_option_set (BGP_OPT_ALWAYS_OPEN); - return CMD_SUCCESS; -} - -DEFUN_HIDDEN (no_bgp_open_accept, - no_bgp_open_accept_cmd, - "no bgp open-accept", - NO_STR - BGP_STR - "Send OPEN immediately on accepted connections\n") - -{ - bgp_option_unset (BGP_OPT_ALWAYS_OPEN); - return CMD_SUCCESS; -} - DEFUN (no_synchronization, no_synchronization_cmd, "no synchronization", @@ -8842,10 +8820,6 @@ bgp_vty_init (void) install_element (CONFIG_NODE, &bgp_config_type_cmd); install_element (CONFIG_NODE, &no_bgp_config_type_cmd); - /* "bgp open-all" commands. */ - install_element (CONFIG_NODE, &bgp_open_accept_cmd); - install_element (CONFIG_NODE, &no_bgp_open_accept_cmd); - /* Dummy commands (Currently not supported) */ install_element (BGP_NODE, &no_synchronization_cmd); install_element (BGP_NODE, &no_auto_summary_cmd); diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index bda35ae5..8eb0d2e4 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -81,7 +81,6 @@ bgp_option_set (int flag) case BGP_OPT_NO_FIB: case BGP_OPT_MULTIPLE_INSTANCE: case BGP_OPT_CONFIG_CISCO: - case BGP_OPT_ALWAYS_OPEN: SET_FLAG (bm->options, flag); break; default: @@ -101,7 +100,6 @@ bgp_option_unset (int flag) /* Fall through. */ case BGP_OPT_NO_FIB: case BGP_OPT_CONFIG_CISCO: - case BGP_OPT_ALWAYS_OPEN: UNSET_FLAG (bm->options, flag); break; default: @@ -4912,13 +4910,6 @@ bgp_config_write (struct vty *vty) write++; } - /* BGP Open-Always */ - if (bgp_option_check (BGP_OPT_ALWAYS_OPEN)) - { - vty_out (vty, "bgp open-accept%s", VTY_NEWLINE); - write++; - } - /* BGP configuration. */ for (ALL_LIST_ELEMENTS (bm->bgp, mnode, mnnode, bgp)) { diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h index 89dde8f1..afe06635 100644 --- a/bgpd/bgpd.h +++ b/bgpd/bgpd.h @@ -59,7 +59,6 @@ struct bgp_master #define BGP_OPT_NO_FIB (1 << 0) #define BGP_OPT_MULTIPLE_INSTANCE (1 << 1) #define BGP_OPT_CONFIG_CISCO (1 << 2) -#define BGP_OPT_ALWAYS_OPEN (1 << 3) }; /* BGP instance structure. */ diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index 5307b413..11f12c5c 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -3093,7 +3093,7 @@ DEFUN (show_ip_ospf_neighbor_all, "Neighbor list\n" "include down status neighbor\n") { - struct ospf *ospf = vty->index; + struct ospf *ospf = ospf_lookup (); struct listnode *node; struct ospf_interface *oi; diff --git a/zebra/client_main.c b/zebra/client_main.c index c319aac7..ce01231f 100644 --- a/zebra/client_main.c +++ b/zebra/client_main.c @@ -1,5 +1,5 @@ /* - * $Id: client_main.c,v 1.1 2002/12/13 20:15:30 paul Exp $ + * $Quagga: $Format:%an, %ai, %h$ $ * * GNU Zebra client test main routine. * Copyright (C) 1997 Kunihiro Ishiguro |