OpenBSD CVS

CVS log for src/usr.sbin/switchd/Attic/switchd.h


[BACK] Up to [local] / src / usr.sbin / switchd

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.31, Thu Nov 11 09:59:19 2021 UTC (2 years, 6 months ago) by claudio
Branch: MAIN
CVS Tags: HEAD
Changes since 1.30: +1 -1 lines
FILE REMOVED

Retire switchd and switchctl. While interesting they never managed to
really get into a usable state. The OpenFlow API is mostly superseeded
by P4 and so this is a bit of a dead end.
OK akoshibe@ yasuoka@ deraadt@ kn@ patrick@ sthen@

Revision 1.30 / (download) - annotate - [select for diffs], Thu Nov 21 06:22:57 2019 UTC (4 years, 6 months ago) by akoshibe
Branch: MAIN
CVS Tags: OPENBSD_7_0_BASE, OPENBSD_7_0, OPENBSD_6_9_BASE, OPENBSD_6_9, OPENBSD_6_8_BASE, OPENBSD_6_8, OPENBSD_6_7_BASE, OPENBSD_6_7
Changes since 1.29: +2 -2 lines
Diff to previous 1.29 (colored)

Remove arguments from ofp13_flowmod() which are unused and unnecessary.

ok guenther@

Revision 1.29 / (download) - annotate - [select for diffs], Sun May 5 21:33:00 2019 UTC (5 years, 1 month ago) by akoshibe
Branch: MAIN
CVS Tags: OPENBSD_6_6_BASE, OPENBSD_6_6
Changes since 1.28: +3 -3 lines
Diff to previous 1.28 (colored)

switchd(8) will sometimes not save a copy of a packet needing forwarding
even when a switch(4) instance requires it to supply it. Cases where this
can happen are: if the copy of the packet recieved from the switch is too
short (source/destination pairs can't be recovered), is non-unicast, or
when switchd has to fall back to flooding traffic.

Factor out the check for short packets, stopping before forwarding
decisions are made if the full packet is needed by the switch. Set the
packet buffer early for cases where it is needed otherwise.

Also replace a few bzero's with memset's.

Diff based on one by guenther@
OK phessler@

Revision 1.28 / (download) - annotate - [select for diffs], Thu Dec 22 15:31:43 2016 UTC (7 years, 5 months ago) by rzalamena
Branch: MAIN
CVS Tags: OPENBSD_6_5_BASE, OPENBSD_6_5, OPENBSD_6_4_BASE, OPENBSD_6_4, OPENBSD_6_3_BASE, OPENBSD_6_3, OPENBSD_6_2_BASE, OPENBSD_6_2, OPENBSD_6_1_BASE, OPENBSD_6_1
Changes since 1.27: +36 -2 lines
Diff to previous 1.27 (colored)

Learn remote switch flow tables properties to find out where to install
the default table-miss flow for OpenFlow 1.3.5. This is enough to make
switchd(8) to work with switch(4) and HP 3800 switch out-of-the-box.

ok reyk@

Revision 1.27 / (download) - annotate - [select for diffs], Fri Dec 2 14:39:46 2016 UTC (7 years, 6 months ago) by rzalamena
Branch: MAIN
Changes since 1.26: +11 -2 lines
Diff to previous 1.26 (colored)

Implement the connection state machine for OpenFlow 1.0 and 1.3 to detect
invalid state transitions and invalid protocol version switching after the
hello messages exchange.

ok reyk@

Revision 1.26 / (download) - annotate - [select for diffs], Tue Nov 22 17:21:56 2016 UTC (7 years, 6 months ago) by rzalamena
Branch: MAIN
Changes since 1.25: +9 -1 lines
Diff to previous 1.25 (colored)

Implement support for version negotiation using hello messages. This
also prevents connections from switching the version in the middle of
the operation.

tweak from and ok reyk@

Revision 1.25 / (download) - annotate - [select for diffs], Fri Nov 18 16:49:35 2016 UTC (7 years, 6 months ago) by reyk
Branch: MAIN
Changes since 1.24: +2 -1 lines
Diff to previous 1.24 (colored)

Define constmap in ofp_map.h to be shared along with ofp_map.c

Revision 1.24 / (download) - annotate - [select for diffs], Fri Nov 18 16:34:04 2016 UTC (7 years, 6 months ago) by reyk
Branch: MAIN
Changes since 1.23: +4 -4 lines
Diff to previous 1.23 (colored)

Remove leading _ from include guards as this violates the reserved space.

Revision 1.23 / (download) - annotate - [select for diffs], Thu Nov 17 12:40:56 2016 UTC (7 years, 6 months ago) by reyk
Branch: MAIN
Changes since 1.22: +31 -2 lines
Diff to previous 1.22 (colored)

Add an abstraction layer / API to create flows including all matches
and instructions.  This makes it easier to integrate flow features in
switchd and switchctl later.

Written and committed during a long flight.

OK rzalamena@

Revision 1.22 / (download) - annotate - [select for diffs], Thu Nov 17 10:05:44 2016 UTC (7 years, 6 months ago) by reyk
Branch: MAIN
Changes since 1.21: +4 -1 lines
Diff to previous 1.21 (colored)

Add ofp_validate() for all supported versions. Will be used by switchctl,
no functional change.

Revision 1.21 / (download) - annotate - [select for diffs], Thu Nov 17 09:42:11 2016 UTC (7 years, 6 months ago) by rzalamena
Branch: MAIN
Changes since 1.20: +7 -1 lines
Diff to previous 1.20 (colored)

Added the missing code to build flow-mod messages and to install
table-miss by default for switch(4).

ok reyk@

Revision 1.20 / (download) - annotate - [select for diffs], Tue Nov 15 09:05:14 2016 UTC (7 years, 6 months ago) by reyk
Branch: MAIN
Changes since 1.19: +2 -1 lines
Diff to previous 1.19 (colored)

Add a socket_setport() util function, in addition to socket_getport(),
and use it in switchctl to set a default port for "dump".
No functional change for switchd itself.

Revision 1.19 / (download) - annotate - [select for diffs], Fri Nov 11 22:07:40 2016 UTC (7 years, 6 months ago) by reyk
Branch: MAIN
Changes since 1.18: +4 -4 lines
Diff to previous 1.18 (colored)

Move ofp_validate_header() into ofp_common.c.  No functional change.

Revision 1.18 / (download) - annotate - [select for diffs], Fri Nov 11 16:59:33 2016 UTC (7 years, 6 months ago) by reyk
Branch: MAIN
Changes since 1.17: +1 -2 lines
Diff to previous 1.17 (colored)

Remove "workarounds" for the read and write path that were needed to
handle /dev/switch connections that didn't quite behave like TCP
connections (no support for writev, no partial reads).  With
rzalamena's changes to switch(4), it now works as expected and doesn't
need any special treatment anymore.

OK rzalamena@

Revision 1.17 / (download) - annotate - [select for diffs], Fri Nov 4 22:27:08 2016 UTC (7 years, 7 months ago) by reyk
Branch: MAIN
Changes since 1.16: +15 -3 lines
Diff to previous 1.16 (colored)

Move ofp_output() into ofp_common.c and few function prototypes into
switchd.h.  No functional change.

Revision 1.16 / (download) - annotate - [select for diffs], Wed Oct 12 19:07:42 2016 UTC (7 years, 7 months ago) by reyk
Branch: MAIN
Changes since 1.15: +15 -13 lines
Diff to previous 1.15 (colored)

Start reworking the "device" support in switchd: Once connected, a
device is just an fd that is connected to a switch, either via TCP or
via /dev/switch.  Change the switchctl from "device add" to "connect"
etc.  This change is an intermediate step towards other changes,
including the configuration grammar, so a few things will be left
undocumented for now.

switchctl(8) examples,
switchctl connect /dev/switch0
switchctl connect /dev/switch0 forward-to 10.1.1.1
switchctl connect 127.0.0.1
switchctl connect 127.0.0.1 forward-to 10.1.1.1
switchctl disconnect /dev/switch0

Discussed with rzalamena@

Revision 1.15 / (download) - annotate - [select for diffs], Fri Oct 7 08:49:53 2016 UTC (7 years, 8 months ago) by reyk
Branch: MAIN
Changes since 1.14: +53 -8 lines
Diff to previous 1.14 (colored)

Move some shared code into a new file.

Discussed with rzalamena@

Revision 1.14 / (download) - annotate - [select for diffs], Fri Oct 7 08:31:08 2016 UTC (7 years, 8 months ago) by rzalamena
Branch: MAIN
Changes since 1.13: +19 -1 lines
Diff to previous 1.13 (colored)

Add support for multipart replies and implement a simple ofp 1.3.5 error
message sending function.

ok reyk@

Revision 1.13 / (download) - annotate - [select for diffs], Fri Sep 30 12:48:27 2016 UTC (7 years, 8 months ago) by reyk
Branch: MAIN
Changes since 1.12: +3 -2 lines
Diff to previous 1.12 (colored)

Remove local copy of ofp.h and use net/ofp.h instead

Revision 1.12 / (download) - annotate - [select for diffs], Fri Sep 30 12:33:43 2016 UTC (7 years, 8 months ago) by reyk
Branch: MAIN
Changes since 1.11: +2 -1 lines
Diff to previous 1.11 (colored)

Disable write events if there is nothing to write.

Revision 1.11 / (download) - annotate - [select for diffs], Fri Sep 30 11:57:57 2016 UTC (7 years, 8 months ago) by reyk
Branch: MAIN
Changes since 1.10: +36 -6 lines
Diff to previous 1.10 (colored)

Implement socket server code that properly handles async I/O, partial
messages, multiple messages per buffer and important things like
connection limits and file descriptor accounting.  It works with TCP
connections as well as switch(4).  The ofrelay.c part replaces
networking that was in ofp.c and will soon handle all socket
connections of switchd.  It is called "ofrelay" because it will be
used as client, server, and forwarder.

OK rzalamena@

Revision 1.10 / (download) - annotate - [select for diffs], Thu Sep 29 20:46:06 2016 UTC (7 years, 8 months ago) by reyk
Branch: MAIN
Changes since 1.9: +2 -1 lines
Diff to previous 1.9 (colored)

Add print_hex() for debugging of received packets (from iked)

Revision 1.9 / (download) - annotate - [select for diffs], Thu Sep 29 18:25:54 2016 UTC (7 years, 8 months ago) by reyk
Branch: MAIN
Changes since 1.8: +2 -2 lines
Diff to previous 1.8 (colored)

Rename ofp_send to ofp_output

Revision 1.8 / (download) - annotate - [select for diffs], Wed Sep 14 13:46:51 2016 UTC (7 years, 8 months ago) by rzalamena
Branch: MAIN
Changes since 1.7: +3 -3 lines
Diff to previous 1.7 (colored)

Teach switchd(8) how to fork+exec.

Note: this daemon has the -Wcast-qual compilation flag which trigger a
warning that wasn't enable in httpd(8) or relayd(8). This will be fixed
in a next diff and then synchronized with other daemons.

ok reyk@

Revision 1.7 / (download) - annotate - [select for diffs], Thu Jul 21 08:39:23 2016 UTC (7 years, 10 months ago) by reyk
Branch: MAIN
CVS Tags: OPENBSD_6_0_BASE, OPENBSD_6_0
Changes since 1.6: +4 -3 lines
Diff to previous 1.6 (colored)

With uint32_t ports, we cannot sneak the port into an int anymore

Revision 1.6 / (download) - annotate - [select for diffs], Thu Jul 21 07:58:44 2016 UTC (7 years, 10 months ago) by reyk
Branch: MAIN
Changes since 1.5: +6 -3 lines
Diff to previous 1.5 (colored)

Turn ofp*_debug functions into ofp*_validate functions to follow a
similar approach like iked: first validate the packet, then parse it,
and execute actions.  debug logging is a side effect of validation.

Revision 1.5 / (download) - annotate - [select for diffs], Wed Jul 20 21:01:06 2016 UTC (7 years, 10 months ago) by reyk
Branch: MAIN
Changes since 1.4: +3 -3 lines
Diff to previous 1.4 (colored)

pledge(2) all the switchd processes.

Revision 1.4 / (download) - annotate - [select for diffs], Wed Jul 20 20:07:02 2016 UTC (7 years, 10 months ago) by reyk
Branch: MAIN
Changes since 1.3: +5 -5 lines
Diff to previous 1.3 (colored)

Handle ports as uint32_t instead of in_port_t: OpenFlow 1.0 used 16bit
ports, but later versions switched to 32bit ports (for the case that a
virtual switch has more than 65535 switch ports, of course).

Revision 1.3 / (download) - annotate - [select for diffs], Wed Jul 20 14:15:08 2016 UTC (7 years, 10 months ago) by reyk
Branch: MAIN
Changes since 1.2: +1 -7 lines
Diff to previous 1.2 (colored)

Update OpenFlow 1.3 stub based on the 1.0 code.

Revision 1.2 / (download) - annotate - [select for diffs], Wed Jul 20 11:43:31 2016 UTC (7 years, 10 months ago) by jsg
Branch: MAIN
Changes since 1.1: +5 -1 lines
Diff to previous 1.1 (colored)

Add a -n flag to check the configuration and exit.  Matches what almost
all the other daemons do.

ok reyk@

Revision 1.1 / (download) - annotate - [select for diffs], Tue Jul 19 16:54:26 2016 UTC (7 years, 10 months ago) by reyk
Branch: MAIN

Import switchd(8), a basic WIP OpenFlow implementation for OpenBSD.

switchd consists of two parts:
1. switchd(8) and switchctl(8), an OpenFlow controller or "vswitch".
2. switch(4), an OpenFlow-aware kernel "bridge".

This the 1st part, the driver will be imported later.  The code will
remain disabled for a while, but it helps development to have it in
the tree.  switchd currently supports partial OpenFlow 1.0, but the
goal is to use OpenFlow 1.3.5 instead (switch(4) already does 1.3.5).

For more background information see:
http://www.openbsd.org/papers/bsdcan2016-switchd.pdf
https://youtu.be/Cuo0qT-lqig

With help from yasuoka@ goda@
Import discussed with deraadt@

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.