• Jan Maria Matejka's avatar
    Terminology cleanup: The import_control hook is now called preexport. · 9d4f782a
    Jan Maria Matejka authored
    Once upon a time, far far away, there were the old Bird developers
    discussing what direction of route flow shall be called import and
    export. They decided to say "import to protocol" and "export to table"
    when speaking about a protocol. When speaking about a table, they
    spoke about "importing to table" and "exporting to protocol".
    
    The latter terminology was adopted in configuration, then also the
    bird CLI in commit ea2ae6dd started to use it (in year 2009). Now
    it's 2018 and the terminology is the latter. Import is from protocol to
    table, export is from table to protocol. Anyway, there was still an
    import_control hook which executed right before route export.
    
    One thing is funny. There are two commits in April 1999 with just two
    minutes between them. The older announces the final settlement
    on config terminology, the newer uses the other definition. Let's see
    their commit messages as the git-log tool shows them (the newer first):
    
        commit 9e0e485e
        Author: Martin Mares <mj@ucw.cz>
        Date:   Mon Apr 5 20:17:59 1999 +0000
    
    	Added some new protocol hooks (look at the comments for better explanation):
    
    		make_tmp_attrs          Convert inline attributes to ea_list
    		store_tmp_attrs         Convert ea_list to inline attributes
    		import_control          Pre-import decisions
    
        commit 5056c559
        Author: Martin Mares <mj@ucw.cz>
        Date:   Mon Apr 5 20:15:31 1999 +0000
    
    	Changed syntax of attaching filters to protocols to hopefully the final
    	version:
    
    		EXPORT <filter-spec>    for outbound routes (i.e., those announced
    					by BIRD to the rest of the world).
    		IMPORT <filter-spec>    for inbound routes (i.e., those imported
    					by BIRD from the rest of the world).
    
    	where <filter-spec> is one of:
    
    		ALL                     pass all routes
    		NONE                    drop all routes
    		FILTER <name>           use named filter
    		FILTER { <filter> }     use explicitly defined filter
    
    	For all protocols, the default is IMPORT ALL, EXPORT NONE. This includes
    	the kernel protocol, so that you need to add EXPORT ALL to get the previous
    	configuration of kernel syncer (as usually, see doc/bird.conf.example for
    	a bird.conf example :)).
    
    Let's say RIP to this almost 19-years-old inconsistency. For now, if you
    import a route, it is always from protocol to table. If you export a
    route, it is always from table to protocol.
    
    And they lived happily ever after.
    9d4f782a