<commit_before># Files and Directories
- dataplane/rocker
- doc
- impl
- netdev
- LICENSE
- Makefile
- README.md
- libsai.c
- libsai.h
- main.c
- fdb_notification_sample.c

# Files in the "impl" directory
The files in this directory are "dataplane-independent" SAI implmentation.
"Dataplane-independent" SAI implementation means that the codes in this directory
- Do general SAI operations such as:
  - Creating a VLAN
    - Adding a port to a VLAN
      - Creating an L3 route
      - And then call corresponding rocker specific specific operation funcions.
      For example, impl_sai_vlan.c:impl_create_vlan() operates a general data structure for vlan, and then calls `rocker_create_vlan()' at the end of the function.

In order to separate operations into the dataplane-independent SAI layer (this directory) and the dataplane-dependent layer (dataplane/rocker),
some data structures defined in this directory (which of course are dataplane-INdependent) have a pointer to dataplane-DEPENDENT data.
For example, `struct __vlan' in impl_sai_vlan.h is defined as follows:

    struct __vlan{
      sai_vlan_id_t id;
      int number_of_ports;
      sai_vlan_port_t* port_list;
      
      // data plane specific members should be capseralized here
      void* data_plane_attributes;
    };

Here "id", "number_of_ports", and "port_list" are dataplane-independent data and the void* at last is the pointer to the dataplane-dependent part of a vlan data structure (we do this because there is no inheritance in pure C).
The contents of the void* are stored by the dataplane code, and the code in this directory must be unaware of it.
If the code in this directory care the content of the pointer, there must be a bug (or at least design violation).

# Files in the "dataplane/rocker" directory
The files in this directory are "dataplane-dependent" operations for rocker such as:
- Setting virtual NICs up, because a switch port is assosiated with a virtual NIC inside the guest OS in rocker
- Creating a bridge and assigning an L2 interface to the brdige, because a bridge must exists for every VLAN in rocker

Note that the separation of dataplane-dependent and -independent parts is incomplete.
rocker\_\*.{c,h} are completely separeted from the dataplane-independent SAI part,<commit_msg>fix spacing errors<commit_after># Files and Directories
- dataplane/rocker
- doc
- impl
- netdev
- LICENSE
- Makefile
- README.md
- libsai.c
- libsai.h
- main.c
- fdb_notification_sample.c

# Files in the "impl" directory
The files in this directory are "dataplane-independent" SAI implmentation.
"Dataplane-independent" SAI implementation means that the codes in this directory
- Do general SAI operations such as:
- Creating a VLAN
- Adding a port to a VLAN
- Creating an L3 route
- And then call corresponding rocker specific specific operation funcions.

For example, impl_sai_vlan.c:impl_create_vlan() operates a general data structure for vlan, and then calls `rocker_create_vlan()' at the end of the function.

In order to separate operations into the dataplane-independent SAI layer (this directory) and the dataplane-dependent layer (dataplane/rocker),
some data structures defined in this directory (which of course are dataplane-INdependent) have a pointer to dataplane-DEPENDENT data.
For example, `struct __vlan' in impl_sai_vlan.h is defined as follows:

    struct __vlan{
      sai_vlan_id_t id;
      int number_of_ports;
      sai_vlan_port_t* port_list;
      
      // data plane specific members should be capseralized here
      void* data_plane_attributes;
    };

Here "id", "number_of_ports", and "port_list" are dataplane-independent data and the void* at last is the pointer to the dataplane-dependent part of a vlan data structure (we do this because there is no inheritance in pure C).
The contents of the void* are stored by the dataplane code, and the code in this directory must be unaware of it.
If the code in this directory care the content of the pointer, there must be a bug (or at least design violation).

# Files in the "dataplane/rocker" directory
The files in this directory are "dataplane-dependent" operations for rocker such as:
- Setting virtual NICs up, because a switch port is assosiated with a virtual NIC inside the guest OS in rocker
- Creating a bridge and assigning an L2 interface to the brdige, because a bridge must exists for every VLAN in rocker

Note that the separation of dataplane-dependent and -independent parts is incomplete.
rocker\_\*.{c,h} are completely separeted from the dataplane-independent SAI part,
{'fraction_non_alphanumeric': 0.05387647831800263, 'fraction_numerical': 0.0008760402978537013, 'mean_word_length': 4.108501118568233, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, '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': '560960', 'n_tokens_mistral': 1324, 'n_tokens_neox': 1256, 'n_words': 617}