diff --git a/README.md b/README.md index 6f35202..78459f7 100644 --- a/README.md +++ b/README.md @@ -14,17 +14,17 @@ This repository contains the entire open-source firmware for the Zodiac FX inclu The latest firmware is available in the [Northbound Networks Forums](http://forums.northboundnetworks.com/index.php?topic=52.0). -Starting from version 0.80, Zodiac FX supports firmware updates via the CLI and web interface. In order to make this possible, major changes were made to the firmware flashing process. Follow the update process below, based on your current firmware version. +Starting from version 0.81, Zodiac FX supports firmware updates via the CLI and web interface. In order to make this possible, major changes were made to the firmware flashing process. Follow the update process below, based on your current firmware version. -#### For firmware versions BEFORE version 0.80 +#### For firmware versions BEFORE version 0.81 -To update to version 0.80 or later, a **full upgrade firmware** needs to be flashed. +To update to version 0.81 or later, a **full upgrade firmware** needs to be flashed. Download the latest **full upgrade firmware** from the [Northbound Networks Forums](http://forums.northboundnetworks.com/index.php?topic=52.0) - 'Full Upgrade Firmware (v0.XX) - ZodiacFX_vXX_full_install.bin' Follow the firmware update process detailed in **Section 2. Updating Firmware** in the [Zodiac FX User Guide](http://forums.northboundnetworks.com/downloads/zodiac_fx/guides/ZodiacFX_UserGuide_0317.pdf). -#### For firmware versions AFTER version 0.80 +#### For firmware versions AFTER version 0.81 The update process has been simplified for the newer releases. @@ -83,7 +83,7 @@ The Zodiac FX uses a simple additive checksum to verify the integrity of the upl To sign your own modified firmware, follow the steps below: * Build a 'Release' binary of the modified firmware * Update the Zodiac FX with the modified firmware - * Follow the instructions outlined in Flashing/Updating the Firmware - For firmware versions AFTER version 0.80 + * Follow the instructions outlined in Flashing/Updating the Firmware - For firmware versions AFTER version 0.81 * The firmware will fail the verification check, but will still be stored inside the Zodiac FX flash memory * In the root context of the CLI, type in the hidden command 'get crc' * Open the ZodiacFX.bin file in a hex editor, and append the 8 bytes to the end of the firmware file @@ -99,6 +99,12 @@ Issues can also be [raised](https://github.com/NorthboundNetworks/ZodiacFX/issue ## Release Notes +**Version 0.81** +* Firmware upload fixes (full upgrade required) +* Metering bug-fixes & updates (initial DSCP remark support) +* Port stat output bug-fixes +* Web interface improvements + **Version 0.80** * Firmware upload via CLI and web interface added * Metering added to OpenFlow 1.3 diff --git a/ZodiacFX/src/http.c b/ZodiacFX/src/http.c index 23e827f..9846d63 100644 --- a/ZodiacFX/src/http.c +++ b/ZodiacFX/src/http.c @@ -2909,6 +2909,12 @@ static uint8_t interfaceCreate_Display_Flows(void) flowEnd = iLastFlow; } + // Re-base start of flows if flows have been cleared + if(flowBase > iLastFlow) + { + flowBase = 0; + } + sprintf(shared_buffer, http_header); snprintf(shared_buffer+strlen(shared_buffer), SHARED_BUFFER_LEN-strlen(shared_buffer),\ diff --git a/ZodiacFX/src/openflow/of_helper.c b/ZodiacFX/src/openflow/of_helper.c index 5c84566..b7a9eef 100644 --- a/ZodiacFX/src/openflow/of_helper.c +++ b/ZodiacFX/src/openflow/of_helper.c @@ -1015,7 +1015,7 @@ void remove_flow13(int flow_id) } /* -* Remove a flow entry from the flow table (OF 1.3) +* Remove a flow entry from the flow table (OF 1.0) * * @param flow_id - the index number of the flow to remove * diff --git a/ZodiacFX/src/openflow/openflow_10.c b/ZodiacFX/src/openflow/openflow_10.c index 9502836..c4f4310 100644 --- a/ZodiacFX/src/openflow/openflow_10.c +++ b/ZodiacFX/src/openflow/openflow_10.c @@ -833,6 +833,7 @@ void packet_in(uint8_t *buffer, uint16_t ul_size, uint8_t port, uint8_t reason) */ void flow_mod(struct ofp_header *msg) { + ///**/TRACE("____________________ FLOWMOD ENTRY"); struct ofp_flow_mod * ptr_fm; ptr_fm = (struct ofp_flow_mod *) msg; @@ -841,6 +842,7 @@ void flow_mod(struct ofp_header *msg) { case OFPFC_ADD: + ///**/TRACE("____________________ ADD"); flow_add(msg); break; @@ -897,7 +899,7 @@ void flow_add(struct ofp_header *msg) of10_error(msg, OFPET10_FLOW_MOD_FAILED, OFPFMFC10_ALL_TABLES_FULL); return; } - TRACE("Allocating %d bytes at %p for flow %d\r\n", sizeof(struct ofp_flow_mod), iLastFlow+1); + TRACE("Allocating %d bytes at %p for flow %d", sizeof(struct ofp_flow_mod), flow_match10[iLastFlow], iLastFlow+1); memcpy(flow_match10[iLastFlow], ptr_fm, sizeof(struct ofp_flow_mod)); diff --git a/ZodiacFX/src/openflow/openflow_13.c b/ZodiacFX/src/openflow/openflow_13.c index 4d5fee7..c6ed7f9 100644 --- a/ZodiacFX/src/openflow/openflow_13.c +++ b/ZodiacFX/src/openflow/openflow_13.c @@ -810,6 +810,13 @@ int multi_flow_reply13(uint8_t *buffer, struct ofp13_multipart_request *msg) */ void multi_flow_more_reply13(void) { + uint16_t sndbuf = tcp_sndbuf(tcp_pcb); + if(sndbuf < 2048) + { + TRACE("openflow_13.c: waiting to reply with more flows, sndbuf @ %d", sndbuf); + return; + } + // Clear shared_buffer memset(&shared_buffer, 0, SHARED_BUFFER_LEN);