Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
226 commits
Select commit Hold shift + click to select a range
f395bf0
avoid '/*' in a comment
yamt Jul 4, 2013
e4fffe3
include config.h to pull HAVE_STRLCPY
yamt Jul 4, 2013
6289822
fixes #53 Rectification in installation instructions
srijanmishra Jul 7, 2013
7c6f4d4
Create dpctl_parser.py
simhond Sep 8, 2013
4b72b92
Fix mistake on generation_id calculation and return the current gener…
Sep 13, 2013
30017fb
Merge pull request #54 from srijanmishra/master
Sep 13, 2013
899e5c2
Fix set_field actions for ARP and MPLS fields
Sep 13, 2013
778803b
Merge branch 'master' of https://github.com/CPqD/ofsoftswitch13
Sep 13, 2013
5442bb8
Merge pull request #51 from yamt/misc
Sep 13, 2013
0bb2cf8
note more of required packages
yamt Sep 17, 2013
2c09414
libboost-dev seems to be necessary
yamt Sep 17, 2013
cd572bd
Fix for pbb isid parsing
Sep 18, 2013
e4a6a13
Fix: Init hash map when unpacking match. Without this step, check for…
Sep 19, 2013
1d7855e
Fix a buffer mismanagement bug that causes the udatapath to crash if …
Oct 20, 2013
b3909df
Merge pull request #67 from mcanini/master
Oct 25, 2013
91dae83
Merge pull request #62 from yamt/requirement
Oct 25, 2013
b63c9af
Unpack missing in_port member to packet_out unpack.
Oct 29, 2013
f4cdf1c
Fix a case switch that is not handling unknown instruction types with…
Nov 8, 2013
4e725bc
Add a simple utility program useful for debugging. The program prints…
Nov 8, 2013
88b2d3f
C&P
Nov 8, 2013
32df776
Fix set_field for VLAN fields.
Nov 11, 2013
c4df4d1
Bump max entries to 4096.
Nov 12, 2013
4a54a39
Fix conformance to specifications for Set-Field VLAN_VID
Nov 22, 2013
54d0013
Fix conformance to specifications for Set-Field VLAN_VID
Nov 22, 2013
491a896
Merge pull request #68 from mcanini/master
Nov 22, 2013
cc167ab
Merge pull request #72 from mcanini/upstream
Nov 22, 2013
2200d52
Fix incorrect checksum value due to the Remark DSCP
cloudysunny14 Dec 22, 2013
9b92867
Update dp_actions.c
Dec 25, 2013
2da1f44
Update dpctl.c
Dec 25, 2013
a8095f5
Update dpctl.c
Dec 25, 2013
fccc658
Update dpctl.c
Dec 25, 2013
5e725fd
Merge pull request #76 from cloudysunny14/myFixedRemarkDSCP
Jan 9, 2014
dcdefff
Merge pull request #79 from codeshredder/master
Jan 9, 2014
4a4e89a
Fix caluculate inccorect checksum when Action Set-Field DSCP value an…
cloudysunny14 Jan 15, 2014
78a676f
Merge pull request #82 from cloudysunny14/myFix2
Jan 15, 2014
519b1c6
operation for cookie_mask error
Jan 18, 2014
684a76c
Match field MPLS TC and MPLS BOS doesn't work
cloudysunny14 Jan 27, 2014
1d2d11a
Merge pull request #85 from cloudysunny14/myFix
Feb 17, 2014
e814308
Merge pull request #83 from codeshredder/patch-1
Feb 17, 2014
cea85b7
Correct mask to print MPLS BOS match field
Feb 18, 2014
f8cc42f
Change Netbee version to the most recent
Apr 25, 2014
3a46546
Interfaces with different MTU can cause index OOB / segfault
JanSkalny Apr 25, 2014
d174464
Update README.md
May 4, 2014
a40a1c2
Conforms to the specifications of the OpenFlow 1.3.1
cloudysunny14 Jun 2, 2014
53c70f9
Merge pull request #95 from gprs-sdn/upstream
ederlf Jun 28, 2014
b51dfc9
Merge pull request #106 from cloudysunny14/fix_remark
ederlf Jun 28, 2014
ba99499
Fix running out of array on oxm_ids[], use safer array lengths in tab…
Feb 7, 2014
6efaac9
Parse the match for flow-mod deletes with match, fix crash in dpctl.
Jul 7, 2014
b8e6a55
EXT-258: Implement port liveness, as clarified by EXT-258
Feb 21, 2013
074128d
Implement multipart requests for setting table features.
Mar 7, 2013
81028e9
Handle case of setting features for 8+1 tables
Mar 8, 2013
4e414f8
Framework to enable and disable tables.
Mar 11, 2013
2836522
Validate table ids in feature requests and generate error.
Mar 8, 2013
786455f
Role status events (from Dingwanfu - Huawei).
Mar 18, 2013
4918dfa
Fix typo preventing compile.
Mar 18, 2013
aa85c03
Send gratuitous role status message on master loss (from Dingwanfu - …
Mar 18, 2013
385d29c
Remove OFPCRR_MASTER_FAIL which is not defined by the spec.
Mar 18, 2013
9cc2d36
Reject goto instruction in the last table.
Mar 25, 2013
7405d77
When switch has one table, don't advertise goto instruction.
Mar 25, 2013
41e3f82
Add ability to set and display XIDs in dpctl
Jun 10, 2013
dd6995c
Change default TCP port to 6653 (IANA official allocation)
Aug 23, 2013
bef2cfc
OXM_OF_IPV6_EXTHDR can't be used with set-field.
Aug 24, 2013
246e4de
Allow dpctl to set ipv6_exthdr to trigger error message.
Aug 24, 2013
795821c
Implement OFPFF_RESET_COUNTS for flow-mod modify.
Jan 29, 2014
2350fd9
EXT-387: Implement an exact-match 5 tupple table.
Feb 7, 2014
a382bb9
Make DSCP_REMARK increase drop precedence in IP packets (see EXT-416).
Feb 1, 2014
71b51e3
Properly handle error in table features.
Feb 3, 2014
f308c28
Display table features errors.
Feb 3, 2014
f6bdeeb
EXT-436: Pretend we don't support setting table-features and return a…
Feb 3, 2014
761a02b
Fix missing reply xid to dpctl_transact
Jul 30, 2014
a54476e
Fix lots of ugly warnings
Jul 30, 2014
8944635
Revert "EXT-436: Pretend we don't support setting table-features and …
Aug 25, 2014
cd4d52c
Fix revert of EXT-436, add back necessary local variables.
Aug 25, 2014
8340db6
Revert "EXT-387: Implement an exact-match 5 tupple table."
Aug 25, 2014
a781f1d
Revert "Allow dpctl to set ipv6_exthdr to trigger error message."
Aug 25, 2014
b07667d
Fix errors in ofl_structs_table_properties_unpack().
Feb 3, 2014
3ca5b6d
EXT-457: Insert MPLS header after VLAN headers.
Feb 5, 2014
e0de5dc
Revert "Remove OFPCRR_MASTER_FAIL which is not defined by the spec."
Aug 25, 2014
75da80e
Revert "Send gratuitous role status message on master loss (from Ding…
Aug 25, 2014
aa74ab7
Revert "Fix typo preventing compile."
Aug 25, 2014
0f4277e
Revert "Role status events (from Dingwanfu - Huawei)."
Aug 25, 2014
bd8e7b6
Finish reverting EXT-192/EXT-276 Role Status (1.4 feature).
Aug 25, 2014
36738ae
Fix a few more warnings.
Aug 26, 2014
452a6c7
Add the case of a following IPv6 header for copy ttl in and out action.
Aug 30, 2014
583e20b
Add checks for bad wildcarded flows.
Sep 7, 2014
f2ab224
Fix some match errors
Sep 7, 2014
0b82d22
Implement SET_NW_TTL and DEC_NW_TTL for IPv6 packets
Sep 7, 2014
336502f
Fix OXM_OF_IPV6_ND_SLL and OXM_OF_IPV6_ND_TLL set_field action.
ederlf Sep 9, 2014
0649800
Fix potential bug in handling metadata.
ederlf Oct 8, 2014
8f9cad4
Fix IPv4 checksum on IPv4 ECN or DSCP set field
ederlf Oct 8, 2014
a0fed8b
Always clone packet with an empty action-set.
Sep 29, 2014
3b28f74
Break long string in flow stat reply for readability.
Oct 3, 2014
98386c9
Change packet ownership strategy to avoid cloning packet in groups.
Oct 1, 2014
411c34b
Fix a double free in group of type all with new packet freeing strategy.
Oct 8, 2014
cddc562
Add TUNNEL_ID to set_field action.
ederlf Oct 10, 2014
5ddff81
Fix OXM_SCTP_DST print
ederlf Oct 10, 2014
79941f0
Fix malloc being called twice on reply_port and reply_queue unpack me…
ederlf Oct 10, 2014
167fb86
Change tunnel_id from network to host byte order.
ederlf Oct 10, 2014
440ef4f
Fix search packe_handle validate search for tunnel_id.
ederlf Oct 11, 2014
97c7b80
Change IPv6 flow label and traffic class parsing.
ederlf Oct 11, 2014
5e5774d
128: Hex metadata is being displayed in decimal in flow statistics
Oct 16, 2014
776cd09
Fix memory problems in set table features, clean up loop indexes.
Oct 20, 2014
c532c31
Add simple validations to table feature request.
Oct 20, 2014
01e5dd0
Merge pull request #129 from hdnivara/master
ederlf Nov 8, 2014
062de45
dpctl: Allow 'goto' instruction for a match-all rule
Nov 13, 2014
09af316
More breaks for long strings for better readability.
vitalivanov Nov 26, 2014
79204a0
trivial: empty lines and tabs vs spaces correction.
vitalivanov Nov 26, 2014
fd4c11b
treewide: remove *.bak files.
vitalivanov Nov 26, 2014
242bc55
Various bug fixes.
ederlf Dec 8, 2014
4e8c72d
Update README.md
ederlf Dec 8, 2014
80169c1
Merge pull request #134 from hdnivara/master
ederlf Dec 9, 2014
c4816e8
Merge pull request #140 from InterfaceMasters/imt_fixes
ederlf Dec 9, 2014
70e1eb0
Correct IPv6 ecn and dscp parsing
ederlf Dec 10, 2014
01baa96
Add tcp and udp checksum recalculation after ipv6 src and dst set_field.
ederlf Dec 10, 2014
31ccda6
Add support to match sctp
ederlf Dec 10, 2014
7b2d263
Recalculate sctp check sum after set_field action.
ederlf Dec 11, 2014
80ceb15
Fix IPv6 neighbor discovery target pre requisites check.
ederlf Dec 13, 2014
0fe63d4
Fix wrong checksum calculation of IPv6 neighbor discovery target.
ederlf Dec 15, 2014
f92e608
Fix multipart duration nsec field.
ljerezchaves Dec 15, 2014
9942fb1
Fix pbb_isid size to conform with the specification.
ederlf Dec 17, 2014
0ce861b
Apply DSCP remark for IPv6 packets.
ederlf Dec 17, 2014
c9fa394
Fix IPv4 ecn packet parsing.
ederlf Dec 17, 2014
b17c74e
Add matching of masked vlan_id field.
ederlf Dec 17, 2014
80ffd77
Fix the multiple vlan push.
ederlf Dec 17, 2014
58fc961
Fix vlan pcp parsing.
ederlf Dec 17, 2014
355e0fd
Fix match_mask32.
ederlf Dec 17, 2014
16b60b7
Update README.md
ederlf Jan 8, 2015
377add0
Fix generation id check.
ederlf Feb 23, 2015
b4ccf1b
Do not allow packet_out with OFP_NO_BUFFER without packet data.
ederlf Feb 23, 2015
cb740bd
Add flags member to ofp_flow_stats.
ederlf Feb 23, 2015
1e3c9c4
Fix double free.
Feb 27, 2015
0b41e80
Fix bug in VID handling.
Mar 4, 2015
6241b75
Merge pull request #147 from ljerezchaves/dur-nsec
ederlf Mar 25, 2015
a63ef01
Merge pull request #155 from Viktor-Nordell/master
ederlf Mar 25, 2015
30f8b39
Merge pull request #156 from Viktor-Nordell/vidPresentBug
ederlf Mar 25, 2015
c31d2a1
Fix strict masked ip matching.
ederlf Mar 26, 2015
936696e
Fix network byte order on pack and unpack of get/set async message.
ederlf Apr 2, 2015
bc63546
Update meter_entry.c
Mahdth May 12, 2015
5dc3d2f
Update meter_entry.c
Mahdth May 12, 2015
e2c05d7
This commit fix bug #172, with proper asynchronous configuration check.
ljerezchaves May 17, 2015
7886dba
Merge pull request #167 from Mahdth/patch-1
ederlf May 18, 2015
a89ecf6
Merge pull request #173 from ljerezchaves/async-fix
ederlf May 18, 2015
41cb72d
Fix segmentation fault when handling packets larger than MTU.
ederlf May 20, 2015
a30149a
Minor refactor to meter token bucket.
ederlf May 21, 2015
8089471
Fixed masking logic for:
kapplerchris Apr 11, 2014
3b6a774
Fix endianity problem after setting eth_type.
ederlf May 22, 2015
9227dcc
Implement port up/down detection.
ederlf Jun 12, 2015
37a17cf
Fix queue id check when looking up or adding new queues.
ljerezchaves Jun 18, 2015
17fe16d
Merge pull request #186 from ljerezchaves/queue_id
ederlf Jun 19, 2015
8d3df82
Fix port up/down detection.
ederlf Jul 3, 2015
75ee674
Fix small error when refilling meter band buckets.
ljerezchaves Sep 15, 2015
e6f51ba
Update openflow.h to OpenFlow 1.3.5
ederlf Feb 4, 2016
d2415c6
Fix backtrace.c warnings.
ederlf Feb 4, 2016
9d34e75
Fix backtrace.c warnings.
ederlf Feb 4, 2016
04439b2
Remove leak-checker.
ederlf Feb 4, 2016
3cd4501
Remove warnings from netdev.c
ederlf Feb 4, 2016
9b3526f
Fix warnings related to write and read check.
ederlf Feb 4, 2016
1cc549e
Clean oflib warnings.
ederlf Feb 4, 2016
fe906b8
Delete wrong source files from lib/automake.mk
ederlf Feb 4, 2016
0c5eeed
Fix secchan warnings.
ederlf Feb 4, 2016
382feff
Fix unused function warning
ederlf Feb 4, 2016
ef94441
Fixes warnings of the udatapath code.
ederlf Feb 4, 2016
0a89348
Fix ofp-read.c warnings
ederlf Feb 4, 2016
c3e3d91
No more compilation warnings.
ederlf Feb 4, 2016
a897189
Implement some changes required by the change to the OF 1.3.5 header.
ederlf Feb 4, 2016
1996e7b
Enables execution of boot.sh in non git respositories.
ederlf Feb 25, 2016
9557f68
Statement about the current state of the switch
ederlf Jul 1, 2016
26a561c
Fix missing set_field=tunn_id: option in dpctl.
ljerezchaves Oct 27, 2016
1ae53df
Update README with information about the BEBA-EU branch.
ederlf Feb 21, 2017
136cc08
Fix some mismatch on print format strings.
ljerezchaves Mar 14, 2017
c50a2cd
Merge pull request #204 from ljerezchaves/meter-fix
ederlf Mar 15, 2017
1531e9f
Merge pull request #233 from ljerezchaves/tunn_id-fix
ederlf Mar 15, 2017
a2bd7b0
Merge pull request #239 from ljerezchaves/print-fix
ederlf Mar 15, 2017
b85b534
This commit fix other mismatch on print format strings. Some strings …
ljerezchaves Mar 18, 2017
8cb8d7c
dpctl queue-get-config is showing only 1 queue.
nikchez01 May 31, 2017
3fafe8b
Update installation instructions.
ederlf Jul 10, 2017
c12f71e
Update list of packages required.
ederlf Jul 10, 2017
3689341
Remove paragraph about building in Ubuntu 14.04
ederlf Jul 10, 2017
7c55475
Remove spurious install word among the dependencies
ederlf Jul 10, 2017
8937c1b
Add install script
ederlf Jul 10, 2017
ec4b19e
Add compiler dependencies
ederlf Jul 10, 2017
f06181c
Execute install.sh from other directories
ederlf Jul 10, 2017
59bc59c
Fix when build dir is the same of the code
ederlf Jul 10, 2017
e4322f5
Add check for directory of netbee
ederlf Jul 10, 2017
2f81120
compiles with gcc 7.3.0
teto May 19, 2018
295a60f
Merge pull request #266 from teto/nixos
ederlf May 24, 2018
26255c1
Merge pull request #240 from ljerezchaves/print-fix2
ederlf May 24, 2018
70fe188
Fix mpls label printing
ederlf May 24, 2018
2187ece
Add to set_field in dpctl: UDP source / destination port
andredaube-test Jun 10, 2018
6c9673d
Fix incorrect bitwise comparison when checking port configuration.
ljerezchaves Jul 12, 2018
4f52e14
Dpctl: check for values in hexadecimal for 8, 16 and 32 bits.
ljerezchaves Jul 25, 2018
ca0f4f3
Fix parse16m and parse32m functions.
ljerezchaves Jul 25, 2018
6c5fa41
Fix memory leak erros when parsing masks.
ljerezchaves Jul 25, 2018
a5d4f7c
Fix missing 0x% before SCNx*
ljerezchaves Jul 25, 2018
46c32fa
New parse64m for parsing metadata and tunnel id masks in match fields.
ljerezchaves Jul 25, 2018
ffd01b0
Printing metadata always in hexadecimal.
ljerezchaves Jul 25, 2018
6f02078
New parse64 for parsing tunnel id in set-field action.
ljerezchaves Jul 25, 2018
62bee87
Fix other memory leak errors when using functions that parses masks.
ljerezchaves Jul 25, 2018
59ffc49
Change the write metadata instruction mask separator from , to /
ljerezchaves Jul 25, 2018
33ab0ae
Using parse64m for write metadata instruction.
ljerezchaves Jul 25, 2018
bece41a
Fix gcc 7.3 warning for -Wliteral-suffix
ljerezchaves Jul 25, 2018
b84d2b9
Merge pull request #270 from ljerezchaves/porterror
ederlf Jul 26, 2018
9ac529c
Merge pull request #273 from ljerezchaves/cpp11-warning
ederlf Jul 26, 2018
fb2b5f3
Merge pull request #268 from andredaube/master
ederlf Jul 26, 2018
7161bdb
Merge pull request #274 from ljerezchaves/parse-masks
ederlf Jul 26, 2018
7075dec
Avoid error when trying to clean a non configured queue.
ederlf Aug 16, 2018
5004379
Merge pull request #245 from nikchez01/patch-1
ederlf Aug 16, 2018
9927836
Removes unecessary buffer deletion.
ederlf Aug 16, 2018
c6ceaa0
Merge branch 'master' of https://github.com/CPqD/ofsoftswitch13
ederlf Aug 16, 2018
039a5d9
Fixes #279.
ederlf Aug 16, 2018
3f84e90
Fixes #280
ederlf Aug 16, 2018
85d9fac
Ignore the elements of a Hello message.
ederlf Aug 17, 2018
c831d34
Fix for unpacking multiples queues.
ederlf Aug 18, 2018
84bee07
Update README.md
ederlf Sep 8, 2018
8a900c7
Update README.md
ederlf Sep 8, 2018
6ed5bf1
Keep meter high level status after modify )
abakagamze Sep 10, 2018
d2e515d
Increase the size of dpid to 64 bits in ofdatapath cmd
ederlf Sep 12, 2018
0eb7b09
Update README.md
ederlf Sep 13, 2018
de02e95
Fix how the switch get valid next table ids for goto in table feature…
ljerezchaves Oct 1, 2018
db04f61
Fix compilation warnings for gcc -O0 flag. (#287)
ljerezchaves Oct 1, 2018
367d4d9
Return the number of dpid characters to 12
ederlf Oct 10, 2018
e47e0ce
Merge branch 'master' of https://github.com/CPqD/ofsoftswitch13
ederlf Oct 10, 2018
0910e04
Fix wrong flow-mod parser for strings with only match or instructions…
ljerezchaves Oct 21, 2018
1939c26
Update README.md
ederlf Jan 25, 2019
e705035
Update README.md
ederlf Jan 25, 2019
aaebdbc
Update README.md
ederlf May 22, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ AM_CPPFLAGS = $(SSL_CFLAGS) -g
AM_CPPFLAGS += -I $(top_srcdir)/include
AM_CPPFLAGS += -I $(top_srcdir)/lib

AM_CFLAGS = -Wstrict-prototypes
AM_CFLAGS = -Wstrict-prototypes -Werror

if NDEBUG
AM_CPPFLAGS += -DNDEBUG
Expand Down
96 changes: 46 additions & 50 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,63 +1,82 @@
# OpenFlow 1.3 Software Switch
# Basic OpenFlow Software Switch (BOFUSS)

This is an [OpenFlow 1.3][ofp13] compatible user-space software switch implementation. The code is based on the [Ericsson TrafficLab 1.1 softswitch
implementation][ericssonsw11], with changes in the forwarding plane to support
OpenFlow 1.3.
This is an [OpenFlow 1.3][ofp13] compatible user-space software switch implementation. The code is based on the [Ericsson TrafficLab 1.1 softswitch implementation][ericssonsw11], with changes in the forwarding plane to support
OpenFlow 1.3.

### [A paper that describes the basic architecture, selected use cases and a few benchmarks is available on Arxiv](https://arxiv.org/abs/1901.06699).
If you use the switch for academic purpuses, please consider the use of this citation.

```
@article{fernandes2020road,
title={The road to BOFUSS: The basic OpenFlow userspace software switch},
author={Fernandes, Eder Le{\~a}o and Rojas, Elisa and Alvarez-Horcajo, Joaquin and Kis, Zolt{\`a}n Lajos and Sanvito, Davide and Bonelli, Nicola and Cascone, Carmelo and Rothenberg, Christian Esteve},
journal={Journal of Network and Computer Applications},
pages={102685},
year={2020},
publisher={Elsevier}
}

```

## [Please read the FAQ before posting an issue](https://github.com/CPqD/ofsoftswitch13/wiki/Frequently-Asked-Questions)

Check the [Wiki](https://github.com/CPqD/ofsoftswitch13/wiki) for some resources that could possibly help you to modify the switch.

**UPDATE**: A new experimental branch with contributions from the [BEBA EU Project][beba-eu] is available with lots of performance improvements and OpenFlow extensions. If you want to try the code checkout to the BEBA-EU branch.

```bash
$ git checkout remotes/origin/BEBA-EU
```

The following components are available in this package:
* `ofdatapath`: the switch implementation
* `ofprotocol`: secure channel for connecting the switch to the controller
* `oflib`: a library for converting to/from 1.3 wire format
* `dpctl`: a tool for configuring the switch from the console


# Getting Started

These instructions have been tested on Ubuntu 12.04. Other distributions or versions may need different steps.
These instructions have been tested on Ubuntu 16.04. Other distributions or versions may need different steps.

## Before building
The switch makes use of the NetBee library to parse packets, so we need to install it first.

1. Install the following packages:

```
$ sudo apt-get install cmake libpcap-dev libxerces-c2-dev libpcre3-dev flex bison
$ sudo apt-get install cmake libpcap-dev libxerces-c3.1 libxerces-c-dev libpcre3 libpcre3-dev flex bison pkg-config autoconf libtool libboost-dev
```

2. Download and unpack the source code from: http://www.nbee.org/download/nbeesrc-12-05-16.php

3. Create the build system
2. Clone and build netbee

```
$ cd nbeesrc/src
$ git clone https://github.com/netgroup-polito/netbee.git
$ cd netbee/src
$ cmake .
```

4. Compile

```
$ make
```

5. Add the shared libraries built in `/nbeesrc/bin/` to your `/usr/local/lib` directory
3. Add the shared libraries built in `/nbeesrc/bin/` to your `/usr/local/lib` directory

```
$ sudo cp ../bin/libn*.so /usr/local/lib
```

6. Run `ldconfig`
4. Run `ldconfig`

```
$ sudo ldconfig
```

7. Put the folder `nbeesrc/include` in the `/usr/include`
5. Put the contens of folder `nbeesrc/include` in the `/usr/include`

```
$ sudo cp -R ../include /usr/include
$ sudo cp -R ../include/* /usr/include/
```

## Building
Run the following commands in the `of13softswitch` directory to build and install everything:
Run the following commands in the `ofsoftswitch13` directory to build and install everything:

$ ./boot.sh
$ ./configure
Expand Down Expand Up @@ -108,13 +127,7 @@ You can send requests to the switch using the `dpctl` utility.
$ utilities/dpctl tcp:<switch-host>:<switch-port> flow-mod table=0,cmd=add in_port=1 meter:1
```

For a complete list of commands and arguments, use the `--help` argument.

The `dpctl` utility has some limitations at the moment:
* No support for OXM masks
* No support for multipart messages
* Some set_field action fields are not present

For a complete list of commands and arguments, use the `--help` argument. Also, check the wiki for [Flow Mod examples](https://github.com/CPqD/ofsoftswitch13/wiki/Dpctl-Flow-Mod-Cases)

# Contribute
Please submit your bug reports, fixes and suggestions as pull requests on
Expand All @@ -126,32 +139,15 @@ code from the original Stanford switch).

# Acknowledgments

This project is supported by Ericsson Innovation Center in Brazil.
Maintained by CPqD in technical collaboration with Ericsson Research.

**Contributions:**

Zoltán Lajos Kis, ofsoftswitch 1.1 implementation and guidance for OpenFlow spec related subjects.

Jean Tourrilhes, lots of critical memory bug fixes on table features.

Khai Nguyen Dinh and Thanh Le Dinh, contributions on meter features.

Rich Lane, added the right compiler linker.

yu-iwata, fixed flow deletion without matchin out_port.

Yuval Adler, bug fixes related to matching on vlan and ethertype.

Hiroyasu OHYAMA, correct URL of NetBee Library.

...
This project was supported by Ericsson Innovation Center in Brazil.
Formerly maintained by CPqD in technical collaboration with Ericsson Research.

*"Your name here" -- please, let us*
*know if we forgot to add your name to the list of contributors!*
[**List of Contributors**](https://github.com/CPqD/ofsoftswitch13/wiki/List-of-Contributors)

# Contact
E-mail: Eder Leao Fernandes (ederlf@cpqd.com.br)
E-mail: Eder Leao Fernandes (ederleaofernandes at gmail . com)

[ofp13]: https://www.opennetworking.org/images/stories/downloads/specification/openflow-spec-v1.3.0.pdf
[ericssonsw11]: https://github.com/TrafficLab/of11softswitch
[compileubuntu14]: http://tocai.dia.uniroma3.it/compunet-wiki/index.php/Installing_and_setting_up_OpenFlow_tools
[beba-eu]: http://www.beba-project.eu/
16 changes: 11 additions & 5 deletions boot.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,18 @@
set -e

# Generate list of files in debian/ to distribute.
(echo '# Automatically generated by boot.sh (from Git tree).' &&
printf 'EXTRA_DIST += \\\n' &&
git ls-files debian | grep -v '^debian/\.gitignore$' |
sed -e 's/\(.*\)/ \1 \\/' -e '$s/ \\//') > debian/automake.mk
if [ -d .git ]; then
(echo '# Automatically generated by boot.sh (from Git tree).' &&
printf 'EXTRA_DIST += \\\n' &&
git ls-files debian | grep -v '^debian/\.gitignore$' |
sed -e 's/\(.*\)/ \1 \\/' -e '$s/ \\//') > debian/automake.mk
else
(echo '# Automatically generated by boot.sh (from ls).' &&
printf 'EXTRA_DIST += \\\n' &&
ls debian | grep -v '^debian/\.gitignore$' |
sed -e 's/^/debian\//' -e 's/\(.*\)/ \1 \\/' -e '$s/ \\//') > debian/automake.mk
fi

cat debian/control.in > debian/control

# Bootstrap configure system from .ac/.am files
autoreconf --install --force
41 changes: 33 additions & 8 deletions customnetpdl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -737,6 +737,7 @@
<case value="1"> <nextproto proto="#icmp"/> </case>
<case value="6"> <nextproto proto="#tcp"/> </case>
<case value="17"> <nextproto proto="#udp"/> </case>
<case value="132"> <nextproto proto="#sctp"/> </case>
</switch>
</if-true>
</if>
Expand Down Expand Up @@ -891,10 +892,13 @@
</execute-code>

<format>
<fields>
<field type="bit" name="ver" longname="Version" mask="0xF0000000" size="4" showtemplate="FieldDec"/>
<field type="bit" name="tos" longname="Type of service" mask="0x0F000000" size="4" showtemplate="FieldHex"/>
<field type="bit" name="flabel" longname="{0x8000 28}" mask="0x00FFFFFF" size="4" showtemplate="FieldHex"/>
<fields>
<block name="ipv6_ver_tc_fl" longname="Version, Traffic class and Flow label">
<field type="bit" name="ipv6 dscp" longname="{0x8000 8} DSCP" mask="F0000000" size="4" showtemplate="FieldDec"/>
<field type="bit" name="ipv6 ecn" longname="{0x8000 9} ECN" mask="0F000000" size="4" showtemplate="FieldDec"/>
<field type="bit" name="flabel" mask="00FFFFFF" size="4" showtemplate="FieldDec"/>
</block>
<!-- <field type="fixed" name="ipv6_ver_tc_fl" longname="Version Traffic Class and Flow Label" size="4" showtemplate="FieldHex"/> -->
<field type="fixed" name="plen" longname="Payload Length" size="2" showtemplate="FieldDec"/>
<field type="fixed" name="nexthdr" longname="{0x8000 10} Next Header" size="1" showtemplate="ipv6.nexthdr"/>
<field type="fixed" name="hop" longname="Hop limit" size="1" showtemplate="FieldDec"/>
Expand Down Expand Up @@ -1040,7 +1044,7 @@
<!-- <case value="29"> <nextproto proto="#TP4"/> </case> -->
<!-- <case value="45"> <nextproto proto="#IDRP"/> </case> -->
<case value="58"> <nextproto proto="#icmp6"/> </case>

<case value="132"> <nextproto proto="#sctp"/> </case>
</switch>
</encapsulation>

Expand Down Expand Up @@ -1151,7 +1155,7 @@
-->
<field type="bit" name="prio" longname="Priority" mask="0xE000" size="2" showtemplate="FieldDec"/>
<field type="bit" name="dei" longname="Drop Eligibility" mask="0x1000" size="2" showtemplate="FieldDec"/>
<field type="bit" name="isid" longname="{0x8000 37} I-SID" mask="0x0FFF" size="2" showtemplate="FieldDec"/>
<field type="bit" name="isid" longname="{0x8000 37} I-SID" mask="0x0FFF" size="4" showtemplate="FieldDec"/>

<field type="fixed" name="type" longname="{0x8000 5} Type" size="2" showtemplate="eth.typelength"/>
</fields>
Expand Down Expand Up @@ -1412,7 +1416,7 @@
<block name="NDO" longname="Neighbor Discovery Option" showtemplate="icmp6.ndo">
-->
<block name="NDO" longname="Neighbor Discovery Option">
<field type="fixed" name="ndotype" longname="Type" size="1" showtemplate="icmp6.ndotype"/>
<field type="fixed" name="ndotype" longname="Type" size="1" showtemplate="FieldDec"/>
<field type="fixed" name="length" longname="Length" size="1" showtemplate="FieldDec"/>

<switch expr="buf2int(ndotype)">
Expand Down Expand Up @@ -1734,7 +1738,6 @@
</fields>
</format>


<visualization>
<showsumtemplate name="udp">
<section name="next"/>
Expand All @@ -1746,6 +1749,28 @@
</visualization>
</protocol>

<protocol name="sctp" longname="SCTP (Stream Control Transmission Protocol)" showsumtemplate="sctp">

<format>
<fields>
<field type="fixed" name="sport" size="2" showtemplate="FieldDec"/>
<field type="fixed" name="dport" size="2" showtemplate="FieldDec"/>
<field type="fixed" name="ver_tag" longname="Verification Tag" size="4" showtemplate="FieldDec"/>
<field type="fixed" name="crc" longname="Checksum" size="4" showtemplate="FieldHex"/>
</fields>
</format>

<visualization>
<showsumtemplate name="sctp">
<section name="next"/>
<text value="SCTP: port "/>
<protofield name="sport" showdata="showvalue"/>
<text value=" => "/>
<protofield name="dport" showdata="showvalue"/>
</showsumtemplate>
</visualization>
</protocol>

<protocol name="icmp" longname="ICMP (Internet Control Message Protocol)" showsumtemplate="icmp">
<format>
<fields>
Expand Down
1 change: 0 additions & 1 deletion debian/openflow-common.install
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
_debian/utilities/ofp-parse-leaks usr/bin
_debian/utilities/ofp-pki usr/sbin
_debian/utilities/vlogconf usr/sbin
4 changes: 2 additions & 2 deletions debian/openflow-controller.default
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
# This is a space-delimited list of connection methods:
#
# * "pssl:[PORT]": Listen for SSL connections on the specified PORT
# (default: 6633). The private key, certificate, and CA certificate
# (default: 6653). The private key, certificate, and CA certificate
# must be specified below.
#
# * "pctp:[PORT]": Listen for TCP connections on the specified PORT
# (default: 6633). Not recommended for security reasons.
# (default: 6653). Not recommended for security reasons.
#
# * "nl:DP_IDX": Listen on local datapath DP_IDX. Used only if this
# machine is also an OpenFlow switch and not running the secure
Expand Down
4 changes: 2 additions & 2 deletions debian/openflow-switch.template
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ SWITCH_IP=dhcp

# CONTROLLER: Location of controller.
# One of the following formats:
# tcp:HOST[:PORT] via TCP to PORT (default: 6633) on HOST
# ssl:HOST[:PORT] via SSL to PORT (default: 6633) on HOST
# tcp:HOST[:PORT] via TCP to PORT (default: 6653) on HOST
# ssl:HOST[:PORT] via SSL to PORT (default: 6653) on HOST
# The default below assumes that the controller is running locally.
# This setting has no effect when MODE is set to 'discovery'.
#CONTROLLER="tcp:127.0.0.1"
Expand Down
Loading