feat: publish Android 1.0.1 candidate source and acceptance evidence
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
# LwIP
|
||||
|
||||
[](https://github.com/heiher/lwip)
|
||||
|
||||
This is a branch of liblwip with a simple build system.
|
||||
|
||||
## Features
|
||||
|
||||
* UDP: Allow receiving packets are not destined to localhost.
|
||||
* TCP: Allow accepting connections are not destined to localhost.
|
||||
|
||||
## Examples
|
||||
|
||||
### TCP
|
||||
|
||||
```c
|
||||
static void
|
||||
gateway_init(void)
|
||||
{
|
||||
// Init netif
|
||||
netif_set_up (&netif);
|
||||
netif_set_link_up (&netif);
|
||||
netif_set_default (&netif);
|
||||
|
||||
// Allow to pretend TCP on this netif
|
||||
netif_set_flags (&netif, NETIF_FLAG_PRETEND_TCP);
|
||||
|
||||
tcp = tcp_new_ip_type (IPADDR_TYPE_ANY);
|
||||
|
||||
// Bind TCP to netif first
|
||||
tcp_bind_netif (tcp, &netif);
|
||||
|
||||
// Bind to accept incoming connections to other hosts
|
||||
tcp_bind (tcp, NULL, 0);
|
||||
|
||||
tcp_listen (tcp);
|
||||
tcp_accept (tcp, tcp_accept_handler);
|
||||
}
|
||||
|
||||
static err_t
|
||||
tcp_accept_handler (void *arg, struct tcp_pcb *pcb, err_t err)
|
||||
{
|
||||
// Accept new TCP connection
|
||||
// @pcb->local_ip: The real destination address
|
||||
// @pcb->local_port: The real destination port
|
||||
// @pcb->remote_ip: The real source address
|
||||
// @pcb->remote_port: The real source port
|
||||
}
|
||||
```
|
||||
|
||||
### UDP
|
||||
|
||||
```c
|
||||
static void
|
||||
gateway_init(void)
|
||||
{
|
||||
// Init netif
|
||||
netif_set_up (&netif);
|
||||
netif_set_link_up (&netif);
|
||||
netif_set_default (&netif);
|
||||
|
||||
// Allow to pretend UDP on this netif
|
||||
netif_set_flags (&netif, NETIF_FLAG_PRETEND_UDP);
|
||||
|
||||
udp = udp_new_ip_type (IPADDR_TYPE_ANY);
|
||||
|
||||
// Bind TCP to netif first
|
||||
udp_bind_netif (udp, &netif);
|
||||
|
||||
// Bind to receive packets to other hosts
|
||||
udp_bind (udp, NULL, 0);
|
||||
|
||||
udp_recv (udp, udp_accept_handler, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
udp_accept_handler (void *arg, struct udp_pcb *pcb, struct pbuf *p,
|
||||
const ip_addr_t *addr, u16_t port)
|
||||
{
|
||||
// Similar to TCP accept, receive packets on new UDP PCB.
|
||||
// @pcb: An new UDP PCB for sending and receiving.
|
||||
// @p: Unused
|
||||
// @addr: Unused
|
||||
// @port: Unused
|
||||
udp_recv (pcb, udp_recv_handler, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
udp_recv_handler (void *arg, struct udp_pcb *pcb, struct pbuf *p,
|
||||
const ip_addr_t *addr, u16_t port)
|
||||
{
|
||||
// Receive UDP packets
|
||||
|
||||
// @pcb->local_ip: The real destination address
|
||||
// @pcb->local_port: The real destination port
|
||||
// @pcb->remote_ip: The real source address
|
||||
// @pcb->remote_port: The real source port
|
||||
// @addr: Unused
|
||||
// @port: Unused
|
||||
|
||||
// Send with source address
|
||||
udp_sendfrom (pcb, p, real_src_ip, real_src_port);
|
||||
pbuf_free (p);
|
||||
}
|
||||
```
|
||||
|
||||
## How to Build
|
||||
|
||||
**Unix**:
|
||||
```bash
|
||||
git clone https://gitlab.com/hev/lwip
|
||||
cd lwip
|
||||
make
|
||||
```
|
||||
|
||||
**Android**:
|
||||
```bash
|
||||
mkdir lwip
|
||||
cd lwip
|
||||
git clone https://gitlab.com/hev/lwip jni
|
||||
ndk-build
|
||||
```
|
||||
|
||||
**Windows**:
|
||||
```bash
|
||||
git clone https://gitlab.com/hev/lwip
|
||||
cd lwip
|
||||
make CROSS_PREFIX=x86_64-w64-mingw32-
|
||||
```
|
||||
|
||||
## Upstream
|
||||
https://savannah.nongnu.org/projects/lwip
|
||||
|
||||
[PROJECT_URL]: https://gitlab.com/hev/lwip/commits/main
|
||||
[PIPELINE_STATUS]: https://gitlab.com/hev/lwip/badges/main/pipeline.svg
|
||||
Reference in New Issue
Block a user