Due to a ransomware attack, the wiki was reverted to a July 2022 version. . We apologize for the lack of a more recent valid backup.
...
Table of Contents |
---|
Pre-built VM
ONOS for SPRING-OPEN
Download the SPRING-OPEN source code using github.
...
Code Block | ||
---|---|---|
| ||
cd ~/spring-open mvn clean mvn complie |
...
CLI for SPRING-
...
OPEN
Download a basic functioning build environment plus a few build-time dependencies.
...
Dell Hardware Switches
CPqD Software
...
Switch
Download the source code
Code Block language text git clone https://github.com/CPqD/ofsoftswitch13.git
Go back to the specific version of Cpqd
Code Block language text git checkout f308c28242de57502f06d3dee80ce47ac17b6603
Apply the following patch
Code Block language text title patchfile_cpqd collapse true diff --git oflib/oxm-match.c oflib/oxm-match.c index e21edaa..d763cf9 100644 --- oflib/oxm-match.c +++ oflib/oxm-match.c @@ -202,14 +202,22 @@ oxm_prereqs_ok(const struct oxm_field *field, const struct ofl_match *rule) return false; } + /* Check for eth_type */ if (!field->dl_type[0]) return true; + else if (field->dl_type[0] == htons(0x8847)) + // quick-fix:ignore check for ethtpe when setting mpls label-id + // needs a cleaner solution which checks for a push-mpls action before the set + return true; else { HMAP_FOR_EACH_WITH_HASH (omt, struct ofl_match_tlv, hmap_node, hash_int(OXM_OF_ETH_TYPE, 0), &rule->match_fields) { uint16_t eth_type; memcpy(ð_type, omt->value, sizeof(uint16_t)); + //VLOG_INFO_RL(LOG_MODULE,&rl, "field-dltype %x ethtype %x htons %x", field->dl_type[0], + // eth_type, htons(eth_type)); + if (field->dl_type[0] == htons(eth_type)) { return true; } else if (field->dl_type[1] && field->dl_type[1] == htons(eth_type)) { @@ -349,7 +357,8 @@ parse_oxm_entry(struct ofl_match *match, const struct oxm_field *f, case OFI_OXM_OF_IPV4_SRC_W: case OFI_OXM_OF_ARP_SPA_W: case OFI_OXM_OF_ARP_TPA_W: - ofl_structs_match_put32m(match, f->header, *((uint32_t*) value), *((uint32_t*) mask)); + // note that the mask is bitwise notted to match 1.3 description of mask + ofl_structs_match_put32m(match, f->header, *((uint32_t*) value), ~(*((uint32_t*) mask))); return 0; case OFI_OXM_OF_ARP_SHA: case OFI_OXM_OF_ARP_THA:
If you save it as a file (patchfile_cpqd), then you can apply the patch as following
Code Block language text patch -p0 < ../patchfile_cpqd
- Build it following the README.md file in the directory
...