You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 13
Next »
ONOS
Download the ONOS source code using github.
git clone https://gerrit.onosproject.org/spring-open
Compile the codes.
cd ~/ONOS
mvn clean
mvn complie
Controller-CLI
Download a basic functioning build environment plus a few build-time dependencies.
sudo apt-get install unzip python-dev python-virtualenv \
git openjdk-7-jdk ant build-essential
Download the source codes
git clone https://gerrit.onosproject.org/spring-open-cli
Build the codes
cd onos-sr-cli
./setup.sh
make
Dell Hardware Switches
CPqD Software Switches
Download the source code
git clone https://github.com/CPqD/ofsoftswitch13.git
Go back to the specific version of Cpqd
git checkout f308c28242de57502f06d3dee80ce47ac17b6603
Apply the following patch
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
patch -p0 < ../patchfile_cpqd
- Build it following the README.md file in the directory