r4004 new feature: IPv6 support
authorAlexey Andriyanov <alan@al-an.info>
Wed, 17 Nov 2010 09:34:07 +0000 (09:34 +0000)
committerAlexey Andriyanov <alan@al-an.info>
Wed, 17 Nov 2010 09:34:07 +0000 (09:34 +0000)
commit21ee3351176d1d7085e72031d6e6d5e3c7c8b13e
tree0f971c7215520ff868b6bcbc136875b2209c9964
parent4191d7ab18f68dce0ac2ce0ad16d3c7a7bde21e9
r4004 new feature: IPv6 support

Classes:
 * new class IPv6Address. Stores, formats, parses v6 addresses, does simple arythmetics.

DB schema:
 * IPv6Address table branched from IPv4Address
 * IPv6Allocation table branched from IPv4Allocation
 * IPv6Network table branched from IPv4Network
 * VLANIPv6 table branched from VLANIPv4
 * enum field `entity_type` extended to 'ipv6net' in table FileLink
 * enum field `entity_realm` extended to 'ipv6net' in table TagStorage

Ophandlers:
 * updIPv6Allocation added (brached from updIPv4Allocation)
 * delIPv6Allocation added (brached from delIPv4Allocation)
 * addIPv6Allocation added (brached from addIPv4Allocation)
 * addIPv6Prefix added (brached from addIPv4Prefix)
 * delIPv6Prefix added (brached from delIPv4Prefix)
 * updIPv6Prefix added (brached from updIPv4Prefix)
 * editvv6Address added (brached from editAddress)
 * bindVLANtoIPv6Net added (branched from bindVLANtoIPv4Net)
 * unbindVLANtoIPv6Net added (branched from unbindVLANtoIPv4Net)

inc/navidagion.php:
 * new page 'ipv6space' added to main page layout
 * new tab 'ipv6' added to page 'object'
 * titles from 'IPv4/IPv6 space' pages removed, they are now calculated in dynamic_title_decoder
 * new page 'ipv6address' added
 * new report 'ipv6' added
 * new tab 'ipv6' added to 'vlan' page
 * triggers for 'ipv4/ipv6' tabs added to 'vlan' page

inc/interface.php:
 * renderIndexItem now asks dynamic_title_decoder for page title unless it is set in $pages array
 * renderRackObject:
    * renders both ipv4 and ipv6 allocationd of default tab
* groups allocations by iface name and sorts iface names using sortPortList
* new http req arg 'hl_ipv6_addr
 * renderIPv6ForObject added (branched from renderIPv4ForObject)
 * new status codes for IPv6 added
 * renderIPv6Space added (branched from renderIPv4Space)
 * renderIPv6SpaceRecords added (branched from renderIPv4SpaceRecords)
 * formatIPv6NetUsage added. It generates text like '3 of 4G /64 nets' by used address count and v6net prefix length.
 * renderIPv4SpaceEditor: rendering of delete buttons siplified, the same logic was keeped
 * renderIPv6SpaceEditor added (branched from renderIPv4SpaceEditor)
 * renderIPv6Network added with satellites (renderIPv6NetworkAddresses, renderEmptyIPv6, renderSeparator, getPageNumOfIPv6)
 * renderSearchResults extended to support searching by IPv6 net/addr info
 * renderIPv6Reports added
 * renderTagStats extended to support new realm 'ipv6net'
 * printRoutersTD: router can have v6 address
 * showPathAndSearch now supports ancors in 'params' array (key must be named as '#')
 * dynamic_title_decoder:
    * decodes titles for 'ipv6address' and 'ipv6net' pages
* link to ipv[46]space page now support targeting on matching network with highlight and target support
 * renderVLANInfo shows v6 nets
 * function renderIPv4NetworkProperties renamed to renderIPNetworkProperties for handling both v4/v6 nets
* function printIPv4NetInfoTDs renamed to printIPNetInfoTDs, idem
 * function renderVLANIPv4 renamed to renderVLANIPLinks, idem
 * function render renderIPv4Address renamed to renderIPAddress, idem
 * function renderIPv4AddressProperties renamed to renderIPAddressProperties, idem
 * function renderIPv4AddressAllocations renamed to renderIPAddressAllocations, idem

inc/database.php:
 * scanIPv6Space added, branched from scanIPv4Space
 * getIPv6Address added
 * bindIPv6ToObject added
 * getIPv6AddressNetworkId added
 * new meta-function updateAddress, decides between updateV6Address and updateV4Address
 * updateIPv6Bond added
 * unbindIPv6FromObject added
 * getIPv6PrefixSearchResult added
 * getIPv6AddressSearchResult added
 * getObjectIfacesSearchResults searches for both v4/v6 addresses
 * getIPv6Stats added
 * getRackspaceStats: calculate sum of v4/v6 nets count, keyed with 'ipnet'
 * createIPv6Prefix added
 * destroyIPv6Prefix added
 * getDomainVLANs: calculate sum of v4/v6 nets count, fetches both v4 and v6 net ids
 * getVLANIPv6Options added
 * commitSupplementVLANIPv6 added
 * commitReduceVLANIPv6 added
 * getIPv6Network8021QBindings added

inc/functions.php:
 * assertIPArg: new meta-function, used to decide which type of argument was passed (v4/v6 address)
 * assertIPv6Arg: new function, parses v6 address, throws exception otherwise
 * IPv6NetworkCmp added. simple bitstring compare function
 * ipv6tree_fill added (branched from ipv4tree_fill)
 * ipv6tree_construct added (branched from ipv4tree_construct)
 * iptree_embed: removed 'db_first' and 'db_last' keys cause they are not used any more
 * ipv6tree_embed added (branched from iptree_embed)
 * countOwnIPv4Addresses: removed unused old code for searching in DB. Now that function only counts net width, without used addresses.
 * loadOwnIPv4Addresses: same logic, but calclulation of db_first/db_last moved here from iptree_embed
 * loadIPv6AddrList addded
 * loadOwnIPv6Addresses added (branched from loadOwnIPv4Addresses)
 * prepareIPv6Tree added (branched from prepareIPv4Tree)

inc/triggers.php:
 * new trigger trigger_ipv6 (branched from trigger_ipv4)
 * new trigger trigger_ipv6net_vlanconfig (branched from trigger_ipv4net_vlanconfig)
 * new triggers trigger_vlan_ipv4net
 * new trigger_vlan_ipv6net
12 files changed:
ChangeLog
inc/IPv6.php [new file with mode: 0644]
inc/database.php
inc/functions.php
inc/init.php
inc/interface.php
inc/navigation.php
inc/ophandlers.php
inc/triggers.php
install/init-structure.sql
pix/addressspacev6.png [new file with mode: 0644]
upgrade.php