# xenet

Cross-platform networking library for Rust

[![Crates.io](https://img.shields.io/crates/v/xenet.svg)](https://crates.io/crates/xenet)
[![Documentation](https://docs.rs/xenet/badge.svg)](https://docs.rs/xenet)
[![License](https://img.shields.io/crates/l/xenet.svg)](https://github.com/shellrow/xenet/blob/main/LICENSE)

## Overview

`xenet` is a Rust library that provides cross-platform low-level networking capabilities.   
It includes a set of modules, each with a specific focus:

- `datalink`: Datalink layer networking. 
- `packet`: Low-level packet parsing and building. 
- `packet-builder`: High-level packet building. 
- `socket`: Socket-related functionality.

## Upcoming Features
The project has plans to enhance xenet with the following features:  
- XDP Support: Adding support for eBPF, specifically XDP (eXpress Data Path), for high-performance packet processing and filtering.
- More Protocol Support: Expanding protocol support to include additional network protocols and standards.
- Performance Improvements: Continuously working on performance enhancements for faster network operations.

## Usage

To use `xenet`, add it as a dependency in your `Cargo.toml`:

```toml
[dependencies]
xenet = "0.5"
```

## Using Specific Sub-crates
You can also directly use specific sub-crates by importing them individually.
- `xenet-datalink`
- `xenet-packet`
- `xenet-packet-builder`
- `xenet-socket`

If you want to focus on network interfaces, you can use the [default-net](https://github.com/shellrow/default-net).