<commit_before># Valve

Valve is a smart OpenFlow switch controller built in Ryu (Valve > Switch > Hub).

It supports:
 * OpenFlow v1.3
 * Multiple datapaths
 * Mixed tagged/untagged ports
 * Port-based and IPv4/IPv6 ACLs
 * Autoconfiguration of ports

### Configuration

Valve is configured with a YAML-based configuration file. A sample configuration file is supplied in `valve.yaml-dist`. At the top level you configure your datapaths and ports on each datapath.

The datapath ID may be specified as an integer or hex string (beginning with 0x).

At each level you may have `all` and `default` configuration.

`all` configuration will be applied to each port at the same level or lower levels in the configuration hierarchy.

`default` configuration is only applied to to items that aren't explicitly configured. Configuration closer to the port (i.e datapath-level configuration) will take precedence over configuration specified at higher levels.

### Autoconfigured ports

A port not explicitly defined in the YAML configuration file will be autoconfigured when the datapath comes up with configuration taken from a mixture of `all` and `default`.

### Running

Run with ryu-manager (uses valve.yaml from the current working directory):

```
$ cp valve.yaml-dist valve.yaml
$ $EDITOR valve.yaml
$ ryu-manager valve.py
```<commit_msg>Update readme.<commit_after># Valve

Valve is a smart OpenFlow switch controller built in Ryu (Valve > Switch > Hub).

It supports:
 * OpenFlow v1.3
 * Multiple datapaths
 * Mixed tagged/untagged ports
 * Port-based and IPv4/IPv6 ACLs
 * Autoconfiguration of ports
 * Port statistics

### Configuration

Valve is configured with a YAML-based configuration file. A sample configuration file is supplied in `valve.yaml-dist`. At the top level you configure your datapaths and ports on each datapath.

The datapath ID may be specified as an integer or hex string (beginning with 0x).

At each level you may have `all` and `default` configuration.

`all` configuration will be applied to each port at the same level or lower levels in the configuration hierarchy.

`default` configuration is only applied to to items that aren't explicitly configured. Configuration closer to the port (i.e datapath-level configuration) will take precedence over configuration specified at higher levels.

`exclude` is an attribute that applies to `all` and `default` configuration elements. It excludes a port from having that configuration applied to it automatically. You may include the datapath ID in the form of `dpid:port` to only exclude ports on a specific datapath.

### Autoconfigured ports

A port not explicitly defined in the YAML configuration file will be autoconfigured when the datapath comes up with configuration taken from a mixture of `all` and `default`.

### Running

Run with ryu-manager (uses valve.yaml from the current working directory):

```
$ cp valve.yaml-dist valve.yaml
$ $EDITOR valve.yaml
$ ryu-manager valve.py
```

We have tested Valve against:
 * Open vSwitch v2.1+
 * Pica8 pronto switches (running picos v2.3+)

Please ensure ports are configured in ovs-vsctl with port_mode=trunk for the VLAN tagging to properly work.
{'fraction_non_alphanumeric': 0.059786028949024544, 'fraction_numerical': 0.004719949653870359, 'mean_word_length': 4.519097222222222, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '693524', 'n_tokens_mistral': 874, 'n_tokens_neox': 828, 'n_words': 440}