Assets 2

This release adds a bunch of new features and makes further significant progress in the migration from Zend Framework to Laravel and some of these changes may require manual fixes / changes by you. Please read these release notes carefully.


$ git --no-pager diff --shortstat --no-merges  v4.7.0 v4.8.0
 669 files changed, 71892 insertions(+), 21802 deletions(-)

Upgrade Instructions

  • perform the manual SQL queries below before doing anything else.
  • please follow the official upgrade documentation without skipping any steps.
  • complete some post-upgrade tasks and manual database changes covered in this release notification.

Pre-Upgrade Database Schema Changes

The following may affect zero database rows for most users. At INEX, some of our database entries date back >10 years so there is a little bit of crud in there from older tools and from times when MySQL was less strict on certain formats.

Please execute the following SQL manually:

UPDATE `contact` SET `created` = NULL WHERE CAST(`created` AS CHAR(20)) = '0000-00-00 00:00:00';
UPDATE `contact` SET `lastupdated` = NULL WHERE CAST(`lastupdated` AS CHAR(20)) = '0000-00-00 00:00:00';
DELETE FROM `user_pref` WHERE `user_pref`.`user_id` NOT IN ( SELECT `id` FROM `user`);
UPDATE `irrdb_asn` SET `last_seen` = NULL WHERE CAST(`last_seen` AS CHAR(20)) = '0000-00-00 00:00:00';
UPDATE `consoleserverconnection` SET `autobaud` = 0 WHERE autobaud IS NULL;

Post-Upgrade Tasks and Database Schema Changes

One of the new features of v4.8.0 is fixing the switch database table which until now could hold switches and console servers. This was awkward in practice and we have split these into distinct database tables. The schema changes you ran during the official upgrade will have put in the necessary database schema. You now need to run the following command to migrate the data:

php artisan ixp-manager:upgrade:split-conservers

If you get an error like:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1-8' for key 'console_server_port_uniq'

it means you have a console server with more than one entry for a given port. You need to root these out and fix them. The following SQL will provide these in the format switchid-consoleserverport:

SELECT CONCAT( `switchid`, '-', `port` ) AS `switchport`, 
            COUNT(CONCAT( `switchid`, '-', `port` )) AS `cnt`  
    FROM `consoleserverconnection` 
    GROUP BY `switchport` HAVING cnt > 1

Please read on through the rest of these release notes as there are a number of other important changes and new configuration options that you may wish to set.

Route Server Template Updates

If you are generating your route server configurations via IXP Manager with IRRDB filtering, then please make sure you add the following option to your local .env file:

# Absolute path to run the bgpq3 utility
# e.g. IXP_IRRDB_BGPQ3_PATH=/usr/local/bin/bgpq3

DEPRECATION: the former setting for the bgpq3 path in config/ixp_tools.php is no longer used and the entire irrdb section can be removed.

The route servers in their default configuration filter all IPv4 prefixes >/24. This version of IXP Manager now makes that configurable as well as adding the same restriction for IPv6 (at >/48). If you want to change these, add and set the following options to your .env (default values shown):


The IRRDB database update process now also honours these by passing bgpq3 the -m option (2ebcdc7).

We have extended BGP NEXT_HOP hijacking detection and prevention to v6 also (2893103).

We now optionally allow more specifics in route server inbound prefix filtering. This means, for example, if someone has a IRRDB entry for a.b.0.0/16 but advertises this as 2 /17's, these will be accepted if the user's VLAN interface is configured to allow this. This implements a feature as discussed in inex/IXP-Manager#281 and requested a number of times by others including @listerr (9f146d6). NB: you need to turn this on per member.

If you wish to do it for all existing members, you can run the following SQL command:

UPDATE vlaninterface SET rsmorespecifics = 1;

Latency Graphs (Smokeping) and Graphing

This release migrates all remaining frontend graphing operations to Grapher and Laravel and also migrates latency graphs (via Smokeping) to Grapher.

Grapher Documentation

We have reworked the graphing documentation:

UI Improvements

On the UI you will find a new layout which we feel better incorporates latency and peer to peer graphs. We have also updated the peer to peer graphing UI to better handle situations such as multiple interfaces for the same customer on the same peering LAN.

### Permissions

We have added options to make all customer graphs available to all logged in customer users or publicly available. Neither of these are the default - the default remains that a customer's graphs are only available to that customer. See the API & Permissions documentation section.

Latency / Smokeping Graphs

With the Smokeping migration to Grapher, the following .env parameters need to be updated:

### Sample pre-v4.8 configuration:


### New >=v4.8 configuration:


We have also changing the API endpoint for Smokeping configuration generation to Grapher's API system. As such, older URLs such as:{vlanid}/{protocol}

need to be updated to:

See the Smokeping Grapher documentation for complete details. And also, note particularly that if you are using the supplied Smokeping update script then you will need to update the URL, change the protocols from 4 6 to ipv4 ipv6 and change all instances of ipv${proto} to just $proto in this.


When adding a new customer to IXP Manager, there is now the option to pre-fill that customer's details from PeeringDB based on their AS number. PeeringDB does not provide access to some information such as NOC contact details unless the query comes from an authenticated user.

If you configure the following settings in your .env file, then IXP Manager will query PeeringDB using an authenticated connection:


(clearly, replacing 'username' and 'password' for valid details for a PeeringDB user in your organisation)


As the IXP Manager ecosystem grows, it becomes harder to maintain ubiquitous development environments for coding, testing and demonstrating IXP Manager.

Especially for emulating switches, route servers, graphing and tools such as Bird's Eye. Docker is ideally suited to solving these issues as well as providing the perfect environment for IXP Manager workshops.

To that end, we have creating two Docker systems.

  1. The first is ideally suited for demonstrations, 'just playing' with IXP Manager and workshops:
  2. The second is specifically targeted at IXP Manager developers:

These are in addition to the existing installation scripts and Vagrant:

The Docker images currently reflect v4.7 but will updated shortly for v4.8.

Customer Notes

Customer note functionality has been ported to Laravel and improved. They now also support Markdown.

We have added documentation for this:

One change from previous releases is that notification of customer note changes is now enabled by default for all superadmins. You may want to check system accounts with admin permissions (if you have any) and disable notifications for those as outlined in the documentation.

Exporting Member Details

The older Zend Framework method of exporting member details has been deprecated for sometime and is now removed in this release. If you were using this, please migrate to the new methods:

  1. IX-F Member Export:
  2. New Member Export:

The first link above includes sample JavaScript code for generating member lists using the IX-F Member Export.

Customer Tags

IXP Manager has always supported customer types for: Full, Pro-bono, Internal, Associate.

We appreciate these are sufficient to suit all use cases and from requests from users, we have added tags which allows administrators to tag customers to indicate specific properties that are not built into IXP Manager by default. Some examples might include:

  • commercial vs membership based relationship;
  • special billing relationship (e.g. customer originally connected via 100Mb port which has been discontinued; customer now on 1Gb port but not paying until traffic exceeds 100Mb);

Documentation for tags can be found here:

Discovered MAC Addresses

Discovered MAC addresses is a tool which polls your switches via SNMP to build a database of MAC addresses known to peering ports on the switches.

This is done via the script.

A long standing issue with this was that it used the database field to address the switch rather then the more correct switch.hostname field. The script was updated to fix this so you should:

  1. ensure your switch hostnames are correct
  2. recreate the MySQL views as per the upgrade instructions (step 12 at time of writing)
  3. update the script to the latest version

UI Testing with Laravel Dusk

As an end user, how do you know that what you stick in a web-based form gets put into the database correctly? And conversely, how do you know that form represents the database data correctly when editing?

This is an issue we ran into recently around some checkbox logic and a dropdown showing the wrong selected element. These issues are every bit as dangerous to mission critical elements as the output tests we do with PHPUnit.

We now use Laravel Dusk to test mission critical elements on the frontend UI - read all about the details here including an animation of it in action.

Like the PHPUnit tests, the Laravel Dusk tests are performed via Travis CI everytime we push to GitHub.

New Features and Improvements

In addition to those elements mentioned above, the following summarises the new features and improvements in this release.

We have migrated the following controllers to Laravel (including better documentation, code review and improvements):

  • the customer controller. This includes adding, editing and listing customers; adding and editing registration and billing details; customer overview page and all tabs there in; email templates and welcome email; customer logo management; customer notes.
  • the controllers for showing statistic graphs for MRTG and Smokeping have been migrated.
  • all elements around showing peer to peer graphs have been migrated;
  • a new controller for console servers which has been split from switches.
  • a Latency Graph type has been added to Grapher with a concrete implementation for Smokeping.

Other improvements include:

  • You can now permanently delete a customer. Up until now, you just marked a customer account as closed by setting the Date Left on the customer edit form. We would typically only recommend deleting test customer entries as otherwise you will have no customer history in IXP Manager. This is beta and while we believe we have found and handled all associated customer database references, if you find a bug, please open an issue. This closes inex/IXP-Manager#338, addresses a number of mailing list requests and internal issue islandbridgenetworks/IXP-Manager#108.

  • Implemented the IX-F Member Export Schema v0.7

  • Add a customer using details from PeeringDB. See above.

  • Better proxy support (see v4.7.2 release)

  • Patch Panel enhancements based on real world use:

    • add patch panel actions to the patch panel view page (closes internal issue islandbridgenetworks/IXP-Manager#110);
    • LoAs can now be generated and downloaded / emailed at any stage or a patch panel port's lifecycle;
    • add (co-lo) billing ID to patch panel ports;
    • wildcard search for a patch panel port based on co-lo or billing ID from left hand side menu via xc:yyy where yyy is the ID or partial ID;
  • You can disable the frontend links to the peering matrix by setting adding the following to your .env file: IXP_FE_FRONTEND_DISABLED_PEERING_MATRIX=true.

  • [NF] implement garbage collector for bgp session data (closes inex/IXP-Manager#182)

Bug Fixes

@barryo barryo released this Feb 20, 2018 · 624 commits to master since this release

Assets 2

This is a security and bug fix release for versions v4.7.0 through to v4.7.2 inclusive.

If you are upgrading from v4.7.x, you should follow the standard upgrade instructions.

If you are upgrading from a version <v4.7.0 then you should upgrade to v4.7.0 first by following the specific upgrade instructions from v4.7.0.

Security Fix

This release includes a fix for a security bug introduced in v4.7.0. All users of v4.7.x should upgrade to v4.7.3 immediately. To allow people a chance to upgrade, we will delay publishing more information on the security issue until March 1st 2018.

Credit to @sparkeh for finding this.

Improvements and Bug Fixes

  • Implement the IX-F Member Export Schema v0.7
  • A management MAC address field has been added to the switch table. This is to allow for automated provisioning and particularly to allow you to create DHCP files with static addressing for your switches.
  • A blank customer footer has been added as per inex/IXP-Manager#389 to allow for easy addition of Google Analytics/Piwik (now Matomo) tags.
  • Do not include AS macro is IX-F export if none configured- fixes inex/IXP-Manager#379
  • Escape SNMP commuities for MRTG - fixes inex/IXP-Manager#384
  • Ensures looking glass API URLs do not end with a trailing slash (closes mailing list discussion)
  • Add ping API endpoint (api/v4/ping)
  • Add ability to allow customers to add/delete their configured MAC addresses (disabled by default). See documentation at:

@barryo barryo released this Jan 31, 2018 · 646 commits to master since this release

Assets 2

Up until now, we have supported IXP Manager behind a proxy with some
custom variables. However, Laravel added built in support for this
in 5.5.

This commit removes our custom code in favour of the official version.


NB: Please make sure you have correctly set APP_URL in your local .env file.

NB 2: If upgrading from <4.7.0, please upgrade to v4.7.0 first.

@barryo barryo released this Jan 22, 2018 · 649 commits to master since this release

Assets 2

This fixes an issue with Zend Framework / Laravel configuration such that the following Laravel options (in .env) should carry through the Zend_Mail.


Fortunately, we've very close to the complete removal of ZF.

If upgrading from <4.7.0, please upgrade to v4.7.0 first.


We never updated the version before we tagged this. As such you will see 4.7.0 in the footer still but If you used the v4.7.1 tag, you're on 4.7.1 😉

@barryo barryo released this Nov 28, 2017 · 650 commits to master since this release

Assets 2

This release makes some significant progress in the migration from Zend Framework to Laravel and some of these changes may require manual fixes / changes by you. Please read these release notes carefully.

$ git --no-pager diff --shortstat --no-merges  v4.6.0 v4.7.0
 461 files changed, 17459 insertions(+), 19632 deletions(-)

Composer Version: before proceeding, please ensure you are running a version of composer that is at least v1.5. You can usually upgrade composer by using its self-update command.

PHP libraries: the bcmath extension is now required. On Ubuntu, something like: apt install php7.0-bcmath will take care of this.

This release also migrates from Laravel 5.4 to Laravel 5.5.

To upgrade:

Inactive code: this release contains code that is not currently available via the UI relating to a new feature which we are working on called core interfaces and some new APIs around automation. This will be officially released and explained in a future version.

New Features and Improvements

For this release, we have created a Laravel based CRUD (CReate, Update, Delete and List) scaffolding framework along the lines as what we were using in Zend Framework (Doctrine2Frontend). We have also including developer documentation for this:

Using this, we have migrating the following CRUD controllers to Laravel (including better documentation, code review and improvements):

  • Cabinet / Rack management
  • Console server connections
  • Customer / colo'd kit
  • Facility / location management
  • Infrastructure management
  • IP Address management
  • IRRDB configuration management
  • IXP management
  • MAC addresses (configured and discovered)
  • Vendor management
  • VLAN management

Additional non-CRUD controllers that have been migrated to Laravel include:

  • the ZF index controller is now handled via the default route in routes/web.php
  • the admin dashboard controller (plus styling and presentation updates)
  • mailing list management (see below)
  • the admin search controller
  • the static content controller was migrated to Laravel and redesigned - see below and the documentation at
  • statistics for ixp, infrastructure, switch and trunk graphs (includes backward incompatibilities - see below)
  • weathermaps
  • utilities (mainly phpinfo() access)
  • user API key management
  • user login history viewer
  • the route server prefix analysis tool

Other improvements:

  • Upgraded to Laravel 5.5 (Laravel release notes)
  • Terminology change for MAC addresses - closes #344
  • IP address management now has a proper CIDR network specification for adding addresses and removing unused addresses
  • Big speed improvement for turning OUI MAC addresses into vendor names - see 333c52b and this blog post
  • On the presentation layer, we have renamed Locations to Facilities to better match common industry language and Cabinets to Racks.
  • handle failures with PeeringDB / IX-F API endpoints gracefully
  • now using official parsedown/laravel package for Markdown - closes islandbridgenetworks/IXP-Manager#102

Bug Fixes


  • The older (Zend Framework) method of generating Nagios configuration has been removed (c5ee6b7). If you haven't yet, you now need to migrate to the new APIs for this:

  • A number of unused packages were removed from composer.json

  • We have removed the meeting controller and all associated files. The meeting controller was written in house at INEX for our own particular purposes. It was never documented and was disabled by default. As such, we expect no one is using it and we have stopped for quite a while.

    There are other tools ( ) and services (EventBrite) that solve this problem better than we ever did.

  • The tool to export contacts by type/name has been migrated to Laravel. As such the old ./bin/ixptools.php cli.cli-export-group command has been migrated to artisan the the documentation has been updated to reflect this.

Database Cleanup / Schema Changes

Make sure you have completed any normal schema updates as per the standard upgrade instructions above. These include:

  • vlan table: drop rcvrfname column as it is not used. Add config_name column which provides the vlan name as it should be used in automation / orchestration.

There are a number of tables that are deprecated and need to be removed. You can see these by running the following and you should see similar output. If your output includes view_* tables, that is okay:

./artisan doctrine:schema:update --clean --sql 

Checking if database connected to default entity manager needs updating...
DROP TABLE change_log;
DROP TABLE meeting;
DROP TABLE meeting_item;
DROP TABLE migrations;
DROP TABLE sec_event

If you are happy with the above, execute it via:

./artisan doctrine:schema:update --clean --force

You now need to recreate/refresh the view tables as follows:

mysql -u root $ixpmanager_database_name <tools/sql/views.sql

We have found more instances of tables that have had 0 or "" (empty string) used where null should have been used. Execute the following on your IXP Manager database to clean these up:

UPDATE `cabinet` SET `height` = NULL WHERE `height` = 0 OR `height` = "";

Static Content

The old Zend Framework had an undocumented StaticController which served static content. This has been replaced and documented at:

You need to perform a number of tasks because of this:

  1. if you had skinned and added your own contact details to the $IXPROOT/application/views/[_skins/<your skin name>]/static/support.phtml file, you need to move this as per this documentation and update the template.
  2. if you had created additional static documentation, you also need to migrate these over (e.g. content from $IXPROOT/application/views/_skins/<your skin name>/static.
  3. if you changed the documentation menu, update two files (using $IXPROOT/resources/views/header-documentation.foil.php as a template):
    a. copy the template $IXPROOT/resources/views/header-documentation.foil.php to $IXPROOT/resources/skins/<your skin name>/header-documentation.foil.php and update.
    b. as some pages still use ZF, also update $IXPROOT/application/views/[_skins/<your skin name>]/header-documentation.phtml

Mailing List Management

Mailing list management was previously available via the ZF CLI (ixptool.php) interface and the ZF API v1 interface. These have both been migrated to Laravel using artisan and API v4. The documentation has been updated to reflect this at:

If you are using this, you will need to update your synchronization scripts. IXP Manager will generate new template scripts for you - see these instructions.


Commit 9d11d00 converts the old double implemented IXP/Infrastructure, trunk and switch graph pages into a single implemented version in Laravel.

It also improves this by turning POSTs into GETs allowing easier sharing of specific graph links.

The URLs for this have also changed so if you are linking into graphs from other sites, please update those links or set up web server redirects.

Access Authorisation Changes: we previously used a configuration option ixp_fe.statistics.public defined in configs/ixp_fe.php to required authentication to access these graphs. That has been removed in favour of using Grapher's authorisation methods.

If you wish to make these graphs private, please see this updated documentation.

NB: by default, all of the IXP, infrastructure, switch and trunk graphs are publically accessible.

@barryo barryo released this Oct 10, 2017 · 962 commits to master since this release

Assets 2

This is a bug fix release for v4.6.0.

If you are upgrading from v4.6.0, you should follow the standard upgrade instructions.

If you are upgrading from a version <v4.6.0 then you should either upgrade to v4.6.0 first or follow the specific upgrade instructions from v4.6.

Bug Fixes

  • Could not assign a prewired patch panel port - da188f8
  • Patch Panels: can not select same customer / port details after a reset - fixes #350 / 007c712 and d870c09
  • Available Patch Panel Ports not correct - #346 / fd7809a and a78b6c8
  • Editing a patch panel port - populates incorrect switch port - 0c2fb6c
  • Replace the downdown triggers we have used previously for the Chosen dropdown library for the type required for the newer Select2 library. Fixes a number of UI bugs - 1a9d5ab
  • No Patch Panel auto-select for Duplex partner in 4.6.0 - #347 / 3a8fff1
  • Switches menu item duplicated in a certain views in 4.6.0 - #349 / 81f73dc
  • Fix MRTG config generation - #348 / 2c3330c
Assets 2

IXP Manager v4.6.0 has been crafted from almost 300 new commits since v4.5.0 and, as well as new features, improvements, security fixes and bug fixes, it represents a complete rewrite of the interface management code (as well as a porting of same from Zend Framework to Laravel).

We would like to particularly thank the generosity and support of our sponsors - the Internet Society, Netflix, SwissIX, NIX - and new sponsor GR-IX. We would also like to thank INEX for investing and allocating time from the operations team towards managing, supporting and developing the project. We continue to look for and welcome new sponsors! See details here.

To upgrade:

  1. please follow the official upgrade documentation without skipping any steps. Particularly, we have added a new step which is essential called bower prune.
  2. complete some manual database changes covered at the end of this release notification.

I have copied the commands that we ran at INEX to upgrade our own installation at the end of this release notice.

If it's available for your operating system, we also strongly advise that you install the php-ds package.

Inactive code: this release contains code that is not currently available via the UI relating to a new feature which we are working on called core interfaces and some new APIs around automation. This will be officially released and explained in a future version.

Security Fixes

The release fixes a number of security issues:

  • CSRF attacks were possible on a number of UI actions such as GET requests used for deleting objects. These have been replaced with POST requests and implement a per-request CSRF validation token.
  • a number of XSS issues have also been fixed. We have additionally double-checked all code where non-super admin users can enter data to ensure that data is filtered on input to prevent XSS attacks.

The developers would like to express their sincere gratitude to the team that found these security issues and responsibly disclosed them to us. They have asked to remain anonymous but they know who they are and we thank them!

New Features / Large Improvements

  • Interface management controllers (all covered via this documentation has been ported from ZendFramework to Laravel with numerous improvements and bug fixes. This also includes on screen help messages / documentation.

  • TACACS / User formatting. IXP Manager can generate formatted lists of user information. The best example of this is for TACACS. See the documentation here. This is a complete reimplementation of a similar feature in v3.

  • Add support for Bird's Eye's new large BGP community support into IXP Manager's looking glass.

  • NAGIOS config generation to monitor:

    • peering LAN switches;
    • member reachability (ping v4/v6);
    • member route collector sessions;
    • member route server sessions.

    This is a complete rewrite of a similar (but more opinionated and less flexible) version from v3. See the documentation here.

  • (Significant) speed improvement for updating IRRDB prefixes by using php-ds - see issue #284.

  • Admin view of member graphs now includes sflow / VLAN / protocol view as well as original MRTG / interface view.

  • Addition of live status functionality for all routers that support the looking glass.

Bug Fixes / Small Improvements

  • MAC addresses are now included on the IX-F Member Export. See IXP Manager's documentation here.
  • The Chosen dropdown JS library has been replaced with the more modern Select2 across all Laravel-based pages.
  • When allocating an IP address to a VLAN interface, IXP Manager now checks via AJAX that the IP address really free by checking across all VLANs. This is useful when, say, you add a quarantine and production VLAN interface at the same time.
  • Ability to duplicate a VLAN interface (IP addresses, settings) to a second VLAN.
  • Add unique index on vlan/address for IPv4 and v6 addresses.
  • Fix billing details notification to use new config files (reported via the mailing list).
  • MRTG fixed so that it now correctly displays graphs from the RRD backend. Rendering of RRD based graphs for MRTG and sflow also improved (53f8fe6 | a0e678b | b1b33e7), also closes #332.
  • Fix admin view of all member interfaces which was broken since the move to Grapher (c6820b0).
  • Add string length validator to abbreviated name - fixes #313
  • Clear a number of cached database results when the underlying data changes (8c5950d | 4aa9198)
  • Remove layer2 address when removing VLAN interfaces (5111644 | 15082c0)
  • Fix issue displaying routes in the looking glass (4b81cbd)

Database Fixes

As well as running the database migration code, you will also need to run the following:

  1. IXP Manager was not strict on how it treated 0 (int) versus '' (empty string) versus null in some cases and as such, some columns need to be cleaned.

If you are happy that you have no bonded interfaces with channel group 0, run the following:

UPDATE `virtualinterface` SET `channelgroup` = NULL where `channelgroup` = 0 OR `channelgroup` = "";

Similarly, you may have virtual interfaces with an MTU setting of 0 - fix this with:

UPDATE `virtualinterface` SET `mtu` = NULL where `mtu` = 0 OR `mtu` = "";

We have added a unique constraint on IP addresses per VLAN. If you have accidently managed to add the same IP address to the same VLAN more than once, you'll need to clean this up before the schema update applies. This query can help find such addresses:

SELECT * FROM ipv4address WHERE address IN 
    ( SELECT address FROM `ipv4address` GROUP BY vlanid,address HAVING count(address) > 1 ORDER BY address ) 
    ORDER BY address;

SELECT * FROM ipv6address WHERE address IN 
    ( SELECT address FROM `ipv6address` GROUP BY vlanid,address HAVING count(address) > 1 ORDER BY address ) 
    ORDER BY address;

INEX's Upgrade Commands

What follows is a copy of our own upgrade session at INEX (and yes, we followed the documentation!):

# Move to your IXP Manager installation
cd /srv/ixpmanager

# Disable IXP Manager (disables the frontend, API and commands)
./artisan down

# Optional but recommended: back up your database:
mysqldump -u ixpuser -ppassword ixpdbname | bzip2 >ixp-20171003.sql.bz2

# Update the source:
git fetch
git checkout v4.6.0

# Update PHP dependancies
composer install

# Update UI dependancies
bower prune 
bower install

# Restart memcached and clear Laravel's own cache:
systemctl restart memcached.service
./artisan cache:clear

# See what SQL schema changes are required and then do them:
./artisan doctrine:schema:update --sql
./artisan doctrine:schema:update --force

# We need to run three manual SQL commands:
# 1. update SQL views
% mysql -u ixpuser -ppassword ixpdbname < tools/sql/views.sql
# 2. update channel groups
% mysql -u ixpuser -ppassword ixpdbname

 mysql> UPDATE `virtualinterface` SET `channelgroup` = NULL where `channelgroup` = 0 OR `channelgroup` = "";
Query OK, 122 rows affected (0.01 sec)
Rows matched: 122  Changed: 122  Warnings: 0

mysql> UPDATE `virtualinterface` SET `mtu` = NULL where `mtu` = 0 OR `mtu` = "";
Query OK, 132 rows affected (0.00 sec)
Rows matched: 132  Changed: 132  Warnings: 0

# Now exit MySQM and restart memcached:
systemctl restart memcached.service

# Ensure file permissions are correct:
chown -R $MY_WWW_USER: bootstrap/cache var storage
chmod -R u+rwX bootstrap/cache var storage

# Re-enable the application
./artisan up
Assets 2

It is with great pleasure that we announce the official release v4 of IXP Manager (officially v.4.5.0) (and finally get this monkey off our back!).

INEX has been running v4 in production for over 12 months now. We have also tested the upgrade process with thanks to SwissIX and BCIX - who are both also running it in production. Through those processes we have written up some detailed upgrade instructions which can be found at:

This page covers all the deprecations from IXP Manager v3. It is advised to read those instructions in detail and set aside the best part of a day to work through the process.

If you haven't already seen them, IXP Manager has:

We have made a massive effort on the new documentation and we are adding to it on a near daily basis.

As well as a new framework, some of the new features in IXP Manager v4 include:

There's also a myriad of other fixes, enhancements and minor features.

Thanks to our sponsors, we now have a full time developer on board so stay tuned for lots more!

If you need help, please contact us via the public mailing list (commercial support is also available). If the upgrade instructions are insufficient, we would also love pull requests to improve the documentation.

May 25, 2017
[IM] Try and fix patch panel duplex view
Not sure my original way worked well.
May 24, 2017
[BF] - fix issue split message + button