[feat][emac] add lwip component,add phy_8720 driver,add emac demo

This commit is contained in:
jzlv 2021-09-30 15:18:11 +08:00
parent 908102c0de
commit a6a7f077e5
1899 changed files with 352772 additions and 0 deletions

View File

@ -0,0 +1 @@
#include "phy_8720.c"

View File

@ -0,0 +1,42 @@
/**
* @file ethernet_phy.h
* @brief
*
* Copyright (c) 2021 Bouffalolab team
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
*/
#ifndef __ETHERNET_PHY_H__
#define __ETHERNET_PHY_H__
#include "hal_emac.h"
typedef enum emac_phy_status {
EMAC_PHY_STAT_EEROR,
EMAC_PHY_STAT_LINK_DOWN,
EMAC_PHY_STAT_LINK_INIT,
EMAC_PHY_STAT_LINK_UP,
EMAC_PHY_STAT_100MBITS_FULLDUPLEX,
EMAC_PHY_STAT_100MBITS_HALFDUPLEX,
EMAC_PHY_STAT_10MBITS_FULLDUPLEX,
EMAC_PHY_STAT_10MBITS_HALFDUPLEX,
} emac_phy_status_t;
emac_phy_status_t ethernet_phy_status_get();
int emac_phy_init(emac_phy_cfg_t *cfg);
#endif

View File

@ -0,0 +1,556 @@
/**
* @file ethernetif.h
* @brief
*
* Copyright (c) 2021 Bouffalolab team
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
*/
/* Includes ------------------------------------------------------------------*/
#include "lwip/opt.h"
#include "lwip/timeouts.h"
#include "lwip/netif.h"
#if LWIP_DHCP
#include "lwip/dhcp.h"
#endif
#include "netif/etharp.h"
#include "ethernetif.h"
#include <string.h>
#include "hal_emac.h"
#include <FreeRTOS.h>
#include "semphr.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Network interface name */
#define IFNAME0 'b'
#define IFNAME1 'l'
#define ETH_DMA_TRANSMIT_TIMEOUT (20U)
#define BL702_EMAC 0
#define EMAC_OUTPUT BL702_EMAC
#if LWIP_DHCP
#define MAX_DHCP_TRIES 4
uint32_t DHCPfineTimer = 0;
uint8_t DHCP_state = DHCP_OFF;
#else
/*Static IP ADDRESS: IP_ADDR0.IP_ADDR1.IP_ADDR2.IP_ADDR3 */
#define IP_ADDR0 (uint8_t)192
#define IP_ADDR1 (uint8_t)168
#define IP_ADDR2 (uint8_t)1
#define IP_ADDR3 (uint8_t)221
/*NETMASK*/
#define NETMASK_ADDR0 (uint8_t)255
#define NETMASK_ADDR1 (uint8_t)255
#define NETMASK_ADDR2 (uint8_t)255
#define NETMASK_ADDR3 (uint8_t)0
/*Gateway Address*/
#define GW_ADDR0 (uint8_t)192
#define GW_ADDR1 (uint8_t)168
#define GW_ADDR2 (uint8_t)1
#define GW_ADDR3 (uint8_t)1
#endif
/* Private function prototypes -----------------------------------------------*/
void pbuf_free_custom(struct pbuf *p);
void ethernetif_input(void *argument);
SemaphoreHandle_t emac_rx_sem = NULL;
static StackType_t emac_rx_stack[256];
static StaticTask_t emac_rx_handle;
#if LWIP_DHCP
static StackType_t emac_dhcp_stack[256];
static StaticTask_t emac_dhcp_handle;
#endif
static uint8_t emac_rx_buffer[ETH_RX_BUFFER_SIZE] __attribute__((aligned(16))) = { 0 };
LWIP_MEMPOOL_DECLARE(RX_POOL, 10, sizeof(struct pbuf_custom), "Zero-copy RX PBUF pool");
/* Private functions ---------------------------------------------------------*/
/*******************************************************************************
LL Driver Interface ( LwIP stack --> ETH)
*******************************************************************************/
/**
* @brief In this function, the hardware should be initialized.
* Called from ethernetif_init().
*
* @param netif the already initialized lwip network interface structure
* for this ethernetif
*/
extern void emac_init_txrx_buffer(void);
extern int emac_phy_init(emac_phy_cfg_t *cfg);
void dhcp_thread(void const *argument);
void low_level_init(struct netif *netif)
{
int ret = 0;
emac_device_t emac_cfg = {
.mac_addr[0] = 0x18,
.mac_addr[1] = 0xB9,
.mac_addr[2] = 0x05,
.mac_addr[3] = 0x12,
.mac_addr[4] = 0x34,
.mac_addr[5] = 0x56,
};
/* set phy cfg */
emac_phy_cfg_t phy_cfg = {
.auto_negotiation = 1, /*!< Speed and mode auto negotiation */
.full_duplex = 0, /*!< Duplex mode */
.speed = 0, /*!< Speed mode */
.phy_address = 1, /*!< PHY address */
.phy_id = 0x7c0f0, /*!< PHY OUI, masked */
.phy_state = PHY_STATE_DOWN,
};
/* set MAC hardware address length */
netif->hwaddr_len = ETH_HWADDR_LEN;
/* set MAC hardware address */
netif->hwaddr[0] = emac_cfg.mac_addr[0];
netif->hwaddr[1] = emac_cfg.mac_addr[1];
netif->hwaddr[2] = emac_cfg.mac_addr[2];
netif->hwaddr[3] = emac_cfg.mac_addr[3];
netif->hwaddr[4] = emac_cfg.mac_addr[4];
netif->hwaddr[5] = emac_cfg.mac_addr[5];
/* maximum transfer unit */
netif->mtu = 1500;
/* emac init,configure ethernet peripheral (GPIOs, clocks, MAC, DMA) */
MSG("emac_init\r\n");
emac_init(&emac_cfg);
ret = emac_phy_init(&phy_cfg);
if (PHY_STATE_UP == phy_cfg.phy_state) {
MSG("PHY[%x] @%d ready on %dMbps, %s duplex\n\r", phy_cfg.phy_id, phy_cfg.phy_address,
phy_cfg.speed,
phy_cfg.full_duplex ? "full" : "half");
} else {
MSG("PHY Init fail\n\r");
BL_CASE_FAIL;
while (1)
;
}
emac_init_txrx_buffer();
emac_start();
// emac_start_tx();
/* device capabilities */
/* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */
netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
/* Initialize the RX POOL */
LWIP_MEMPOOL_INIT(RX_POOL);
/* create a binary semaphore used for informing ethernetif of frame reception */
//vSemaphoreCreateBinary(emac_rx_sem);
emac_rx_sem = xSemaphoreCreateBinary();
/* create the task that handles the ETH_MAC */
MSG("[OS] Starting emac rx task...\r\n");
xTaskCreateStatic(ethernetif_input, (char *)"emac_rx_task", sizeof(emac_rx_stack) / 4, netif, osPriorityRealtime, emac_rx_stack, &emac_rx_handle);
#if LWIP_DHCP
MSG("[OS] Starting emac dhcp task...\r\n");
xTaskCreateStatic(dhcp_thread, (char *)"emac_dhcp_task", sizeof(emac_dhcp_stack) / 4, netif, osPriorityRealtime, emac_dhcp_stack, &emac_dhcp_handle);
#endif
if (ret == 0) {
MSG("[OS] %s Netif is up\r\n", netif->name);
netif_set_up(netif);
netif_set_link_up(netif);
}
}
void emac_tx_error_callback_app()
{
MSG("EMAC tx error callback\r\n");
}
void emac_rx_error_callback_app()
{
MSG("EMAC rx error callback\r\n");
// MSG("EMAC tx bd num 0x%x\r\n", BL_RD_WORD(0x4000D020));
// MSG("EMAC rx bd description0 0x%x\r\n", BL_RD_WORD(0x4000D400 + ((5 + 5) * 8)));
// MSG("EMAC rx bd description1 0x%x\r\n", BL_RD_WORD(0x4000D400 + ((5 + 5) * 8) + 0x4));
}
/**
* @brief This function should do the actual transmission of the packet. The packet is
* contained in the pbuf that is passed to the function. This pbuf
* might be chained.
*
* @param netif the lwip network interface structure for this ethernetif
* @param p the MAC packet to send (e.g. IP packet including MAC addresses and type)
* @return ERR_OK if the packet could be sent
* an err_t value if the packet couldn't be sent
*
* @note Returning ERR_MEM here if a DMA queue of your MAC is full can lead to
* strange results. You might consider waiting for space in the DMA queue
* to become available since the stack doesn't retry to send a packet
* dropped because of memory failure (except for the TCP timers).
*/
static unsigned char emac_send_buf[1514];
static err_t low_level_output(struct netif *netif, struct pbuf *p)
{
err_t errval = ERR_OK;
struct pbuf *q;
#if (EMAC_OUTPUT == BL702_EMAC)
uint32_t byteslefttocopy = 0;
// uint32_t payloadoffset = 0;
// uint32_t bufferoffset = 0;
uint32_t framelength = 0;
uint32_t flags = (FULL_PACKET);
for (q = p; q != NULL; q = q->next) {
// MSG("p->tot_len:%d,q->len:%d, q->next:%d,f:%d\r\n", q->tot_len, q->len, q->next, framelength);
byteslefttocopy = q->len;
// payloadoffset = 0;
// check is copy data is larger than emac tx buf
while ((byteslefttocopy + framelength) > ETH_TX_BUFFER_SIZE) {
// copy data to tx buf
MSG("tx buf is too larger!\r\n");
flags = NOFULL_PACKET;
// ARCH_MemCpy_Fast(&emac_send_buf[framelength + bufferoffset], q->payload + payloadoffset, (ETH_TX_BUFFER_SIZE - bufferoffset));
}
ARCH_MemCpy_Fast(&emac_send_buf[framelength], q->payload, byteslefttocopy);
// bufferoffset = bufferoffset + byteslefttocopy;
framelength = framelength + byteslefttocopy;
}
if (0 != emac_bd_tx_enqueue(flags, framelength, emac_send_buf)) {
MSG("emac_bd_tx_enqueue error!\r\n");
return ERR_IF;
}
#else
for (q = p; q != NULL; q = q->next) {
MSG("p->tot_len:%d,q->len:%d, q->next:%d\r\n", q->tot_len, q->len, q->next);
if (q->len == q->tot_len) {
if (0 != emac_bd_tx_enqueue(FULL_PACKET, q->len, q->payload)) {
MSG("emac_bd_tx_enqueue error!\r\n");
return ERR_IF;
}
} else if (q->len < q->tot_len) {
if (0 != emac_bd_tx_enqueue(NOFULL_PACKET, q->len, q->payload)) {
MSG("emac_bd_tx_enqueue error!\r\n");
return ERR_IF;
}
} else {
MSG("low_level_output error! Wrong packet!\r\n");
}
}
#endif
return errval;
}
/**
* @brief Should allocate a pbuf and transfer the bytes of the incoming
* packet from the interface into the pbuf.
*
* @param netif the lwip network interface structure for this ethernetif
* @return a pbuf filled with the received packet (including MAC header)
* NULL on memory error
*/
static struct pbuf *low_level_input(struct netif *netif)
{
uint32_t rx_len = 0;
struct pbuf *p = NULL, *q;
emac_bd_rx_dequeue(-1, &rx_len, emac_rx_buffer);
if (rx_len <= 0) {
//MSG("Recv Null Data\r\n");
return NULL;
}
//MSG("Recv full Data\r\n");
p = pbuf_alloc(PBUF_RAW, rx_len, PBUF_POOL);
if (p != NULL) {
for (q = p; q != NULL; q = q->next) {
memcpy(q->payload, emac_rx_buffer + rx_len - q->tot_len, q->len);
}
}
return p;
}
void emac_rx_done_callback_app(void)
{
BaseType_t xHigherPriorityTaskWoken;
/* Is it time for vATask() to run? */
xHigherPriorityTaskWoken = pdFALSE;
//MSG("emac_rx_done_callback_app\r\n");
//low_level_input(NULL);
xSemaphoreGiveFromISR(emac_rx_sem, &xHigherPriorityTaskWoken);
/* If xHigherPriorityTaskWoken was set to true you
we should yield. The actual macro used here is
port specific. */
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}
/**
* @brief This function is the ethernetif_input task, it is processed when a packet
* is ready to be read from the interface. It uses the function low_level_input()
* that should handle the actual reception of bytes from the network
* interface. Then the type of the received packet is determined and
* the appropriate input function is called.
*
* @param netif the lwip network interface structure for this ethernetif
*/
void ethernetif_input(void *argument)
{
struct pbuf *p = NULL;
struct netif *netif = (struct netif *)argument;
for (;;) {
if (xSemaphoreTake(emac_rx_sem, portMAX_DELAY) == pdTRUE) {
do {
//MSG("ethernetif_input\r\n");
p = low_level_input(netif);
if (p != NULL) {
if (netif->input(p, netif) != ERR_OK) {
pbuf_free(p);
}
}
} while (p != NULL);
}
}
}
/**
* @brief Should be called at the beginning of the program to set up the
* network interface. It calls the function low_level_init() to do the
* actual setup of the hardware.
*
* This function should be passed as a parameter to netif_add().
*
* @param netif the lwip network interface structure for this ethernetif
* @return ERR_OK if the loopif is initialized
* ERR_MEM if private data couldn't be allocated
* any other err_t on error
*/
err_t ethernetif_init(struct netif *netif)
{
LWIP_ASSERT("netif != NULL", (netif != NULL));
#if LWIP_NETIF_HOSTNAME
/* Initialize interface hostname */
netif->hostname = "lwip";
#endif /* LWIP_NETIF_HOSTNAME */
netif->name[0] = IFNAME0;
netif->name[1] = IFNAME1;
/* We directly use etharp_output() here to save a function call.
* You can instead declare your own function an call etharp_output()
* from it if you have to do some checks before sending (e.g. if link
* is available...) */
netif->output = etharp_output;
netif->linkoutput = low_level_output;
/* initialize the hardware */
low_level_init(netif);
return ERR_OK;
}
/**
* @brief Custom Rx pbuf free callback
* @param pbuf: pbuf to be freed
* @retval None
*/
void pbuf_free_custom(struct pbuf *p)
{
struct pbuf_custom *custom_pbuf = (struct pbuf_custom *)p;
LWIP_MEMPOOL_FREE(RX_POOL, custom_pbuf);
}
static void ethernet_set_static_ip(struct netif *netif)
{
ip_addr_t ipaddr;
ip_addr_t netmask;
ip_addr_t gw;
IP4_ADDR(&ipaddr, IP_ADDR0, IP_ADDR1, IP_ADDR2, IP_ADDR3);
IP4_ADDR(&netmask, NETMASK_ADDR0, NETMASK_ADDR1, NETMASK_ADDR2, NETMASK_ADDR3);
IP4_ADDR(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3);
netif_set_addr(netif, ip_2_ip4(&ipaddr), ip_2_ip4(&netmask), ip_2_ip4(&gw));
}
/**
* @brief Notify the User about the network interface config status
* @param netif: the network interface
* @retval None
*/
void ethernet_link_status_updated(struct netif *netif)
{
if (netif_is_link_up(netif)) {
#if LWIP_DHCP
/* Update DHCP state machine */
DHCP_state = DHCP_START;
MSG("DHCP Start\n");
#else
/* IP address default setting */
ethernet_set_static_ip(netif);
uint8_t iptxt[20];
sprintf((char *)iptxt, "%s", ip4addr_ntoa(netif_ip4_addr(netif)));
MSG("Static IP address: %s\n", iptxt);
#endif
} else {
#if LWIP_DHCP
/* Update DHCP state machine */
DHCP_state = DHCP_LINK_DOWN;
#else
MSG("The network cable is not connected \n");
#endif /* LWIP_DHCP */
}
}
/**
* @brief
* @retval None
*/
void ethernet_link_check_state(struct netif *netif)
{
emac_phy_status_t phy_state;
uint32_t linkchanged = 0;
// uint32_t speed = 0, duplex = 0;
phy_state = ethernet_phy_status_get();
if (netif_is_link_up(netif) && (phy_state <= EMAC_PHY_STAT_LINK_DOWN)) {
MSG("Link Down\n");
emac_stop();
netif_set_down(netif);
netif_set_link_down(netif);
} else if (!netif_is_link_up(netif) && (phy_state <= EMAC_PHY_STAT_LINK_DOWN)) {
MSG("Reinit\n");
emac_phy_init(NULL);
} else if (!netif_is_link_up(netif) && (phy_state > EMAC_PHY_STAT_LINK_UP)) {
// switch (phy_state) {
// case EMAC_PHY_STAT_100MBITS_FULLDUPLEX:
// duplex = 1;
// speed = 100;
// linkchanged = 1;
// break;
// case EMAC_PHY_STAT_100MBITS_HALFDUPLEX:
// duplex = 0;
// speed = 100;
// linkchanged = 1;
// break;
// case EMAC_PHY_STAT_10MBITS_FULLDUPLEX:
// duplex = 1;
// speed = 10;
// linkchanged = 1;
// break;
// case EMAC_PHY_STAT_10MBITS_HALFDUPLEX:
// duplex = 0;
// speed = 10;
// linkchanged = 1;
// break;
// default:
// break;
// }
if (linkchanged) {
/* Get MAC Config MAC */
//HAL_ETH_GetMACConfig(&EthHandle, &MACConf);
//MACConf.DuplexMode = duplex;
//MACConf.Speed = speed;
//HAL_ETH_SetMACConfig(&EthHandle, &MACConf);
//HAL_ETH_Start(&EthHandle);
netif_set_up(netif);
netif_set_link_up(netif);
}
}
}
#if LWIP_DHCP
/**
* @brief DHCP Process
* @param argument: network interface
* @retval None
*/
void dhcp_thread(void const *argument)
{
struct netif *netif = (struct netif *)argument;
ip_addr_t ipaddr;
ip_addr_t netmask;
ip_addr_t gw;
struct dhcp *dhcp;
uint8_t iptxt[20];
for (;;) {
switch (DHCP_state) {
case DHCP_START: {
ip_addr_set_zero_ip4(&netif->ip_addr);
ip_addr_set_zero_ip4(&netif->netmask);
ip_addr_set_zero_ip4(&netif->gw);
DHCP_state = DHCP_WAIT_ADDRESS;
MSG(" State: Looking for DHCP server ...\n");
dhcp_start(netif);
} break;
case DHCP_WAIT_ADDRESS: {
if (dhcp_supplied_address(netif)) {
DHCP_state = DHCP_ADDRESS_ASSIGNED;
sprintf((char *)iptxt, "%s", ip4addr_ntoa(netif_ip4_addr(netif)));
MSG("IP address assigned by a DHCP server: %s\n", iptxt);
} else {
dhcp = (struct dhcp *)netif_get_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP);
/* DHCP timeout */
if (dhcp->tries > MAX_DHCP_TRIES) {
DHCP_state = DHCP_TIMEOUT;
/* Static address used */
ethernet_set_static_ip(netif);
sprintf((char *)iptxt, "%s", ip4addr_ntoa(netif_ip4_addr(netif)));
MSG("DHCP Timeout !! \n");
MSG("Static IP address: %s\n", iptxt);
}
}
} break;
case DHCP_LINK_DOWN: {
DHCP_state = DHCP_OFF;
MSG("The network cable is not connected \n");
} break;
default:
break;
}
vTaskDelay(100);
}
}
#endif /* LWIP_DHCP */

View File

@ -0,0 +1,42 @@
/**
* @file ethernetif.h
* @brief
*
* Copyright (c) 2021 Bouffalolab team
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
*/
#ifndef __ETHERNETIF_H__
#define __ETHERNETIF_H__
#include "lwip/err.h"
#include "lwip/netif.h"
#include "ethernet_phy.h"
#define DHCP_OFF (uint8_t)0
#define DHCP_START (uint8_t)1
#define DHCP_WAIT_ADDRESS (uint8_t)2
#define DHCP_ADDRESS_ASSIGNED (uint8_t)3
#define DHCP_TIMEOUT (uint8_t)4
#define DHCP_LINK_DOWN (uint8_t)5
/* Exported types ------------------------------------------------------------*/
err_t ethernetif_init(struct netif *netif);
void ethernet_link_check_state(struct netif *netif);
void ethernet_link_status_updated(struct netif *netif);
#endif

View File

@ -0,0 +1,387 @@
#include <string.h>
#include "hal_emac.h"
#include "ethernet_phy.h"
/* LAN8720 PHY Address*/
#define EMAC_PHY_ADDRESS 0x00U
#define PHY_LINK_TO ((uint32_t)0x00000FFFU)
#define PHY_AUTONEGO_COMPLETED_TO ((uint32_t)0x00000FFFU)
/* Section 3: Common PHY Registers */
#define PHY_BCR ((uint16_t)0x00U) /*!< Transceiver Basic Control Register */
#define PHY_BSR ((uint16_t)0x01U) /*!< Transceiver Basic Status Register */
#define PHY_BSR_100BASETXFULL (1 << 14)
#define PHY_BSR_100BASETXHALF (1 << 13)
#define PHY_BSR_10BASETXFULL (1 << 12)
#define PHY_BSR_10BASETXHALF (1 << 11)
#define PHY_RESET ((uint16_t)0x8000U) /*!< PHY Reset */
#define PHY_LOOPBACK ((uint16_t)0x4000U) /*!< Select loop-back mode */
#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100U) /*!< Set the full-duplex mode at 100 Mb/s */
#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000U) /*!< Set the half-duplex mode at 100 Mb/s */
#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100U) /*!< Set the full-duplex mode at 10 Mb/s */
#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000U) /*!< Set the half-duplex mode at 10 Mb/s */
#define PHY_AUTONEGOTIATION ((uint16_t)0x1000U) /*!< Enable auto-negotiation function */
#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200U) /*!< Restart auto-negotiation function */
#define PHY_POWERDOWN ((uint16_t)0x0800U) /*!< Select the power down mode */
#define PHY_ISOLATE ((uint16_t)0x0400U) /*!< Isolate PHY from MII */
#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020U) /*!< Auto-Negotiation process completed */
#define PHY_LINKED_STATUS ((uint16_t)0x0004U) /*!< Valid link established */
#define PHY_JABBER_DETECTION ((uint16_t)0x0002U) /*!< Jabber condition detected */
#define PHY_PHYID1 ((uint16_t)0x02U) /*!< PHY ID 1 */
#define PHY_PHYID2 ((uint16_t)0x03U) /*!< PHY ID 2 */
#define PHY_ADVERTISE ((uint16_t)0x04U) /*!< Auto-negotiation advertisement */
#define PHY_ADVERTISE_100BASETXFULL (1 << 8)
#define PHY_ADVERTISE_100BASETXHALF (1 << 7)
#define PHY_ADVERTISE_10BASETXFULL (1 << 6)
#define PHY_ADVERTISE_10BASETXHALF (1 << 5)
#define PHY_ADVERTISE_8023 (1 << 0)
#define PHY_LPA ((uint16_t)0x05U) /*!< Auto-negotiation link partner base page ability */
#define PHY_EXPANSION ((uint16_t)0x06U) /*!< Auto-negotiation expansion */
/* Section 4: Extended PHY Registers */
#define PHY_CTRL_STATUS ((uint16_t)17U) /*!< PHY MODE CONTROL/STATUS REGISTER Offset */
#define PHY_CTRL_STATUS_EDPWRDOWN (1 << 13) /*!< EDPWRDOWN */
#define PHY_CTRL_STATUS_ENERGYON (1 << 1) /*!< ENERGYON */
#define PHY_SPECIAL_MODES ((uint16_t)18U) /*!< PHY SPECIAL MODES REGISTER Offset */
#define PHY_SPECIAL_MODES_MODE (7 << 5) /*!< Transceiver mode of operation */
#define PHY_SPECIAL_MODES_MODE_PWRDOWN (6 << 5) /*!< All capable. Auto-negotiation enabled */
#define PHY_SPECIAL_MODES_MODE_ALL (7 << 5) /*!< All capable. Auto-negotiation enabled */
#define PHY_SPECIAL_MODES_PHYAD (0x1F << 0) /*!< PHY Address */
#define PHY_SR ((uint16_t)0x1FU) /*!< PHY special control/ status register Offset */
#define PHY_SR_SPEED_OFFSET (2)
#define PHY_SR_SPEED_MASK (0x7 << PHY_SR_SPEED_OFFSET)
#define PHY_SR_SPEED_10BASETXHALF (0x1 << PHY_SR_SPEED_OFFSET)
#define PHY_SR_SPEED_10BASETXFULL (0x5 << PHY_SR_SPEED_OFFSET)
#define PHY_SR_SPEED_100BASETXHALF (0x2 << PHY_SR_SPEED_OFFSET)
#define PHY_SR_SPEED_100BASETXFULL (0x6 << PHY_SR_SPEED_OFFSET)
#define PHY_SR_SPEED_MODE_COMPARE(status, mode) (!!(mode == (status & PHY_SR_SPEED_MASK)))
#define PHY_SPEED_STATUS ((uint16_t)0x0004U) /*!< PHY Speed mask */
#define PHY_DUPLEX_STATUS ((uint16_t)0x0010U) /*!< PHY Duplex mask */
#define PHY_ISFR ((uint16_t)0x1DU) /*!< PHY Interrupt Source Flag register Offset */
#define PHY_ISFR_INT4 ((uint16_t)0x0010U) /*!< PHY Link down inturrupt */
static emac_phy_cfg_t *phy_8720_cfg = NULL;
int phy_8720_reset(void)
{
int timeout = 1000;
uint16_t regval = PHY_RESET;
/* pull the PHY from power down mode if it is in */
if (0 != emac_phy_reg_read(PHY_SPECIAL_MODES, &regval)) {
return -1;
}
if (PHY_SPECIAL_MODES_MODE_PWRDOWN == (regval & PHY_SPECIAL_MODES_MODE)) {
if (emac_phy_reg_write(PHY_SPECIAL_MODES, regval | PHY_SPECIAL_MODES_MODE_ALL) != 0) {
return -1;
}
}
/* disable energy detect powerdown mode for cable detect, this increase the power by 220mW */
if (0 != emac_phy_reg_read(PHY_CTRL_STATUS, &regval)) {
return -1;
}
if (emac_phy_reg_write(PHY_CTRL_STATUS, regval & (~PHY_CTRL_STATUS_EDPWRDOWN)) != 0) {
return -1;
}
/* do sw reset */
if (emac_phy_reg_write(PHY_BCR, PHY_RESET) != 0) {
return -1;
}
for (; timeout; timeout--) {
if (0 != emac_phy_reg_read(PHY_BCR, &regval)) {
return -1;
}
if (!(regval & PHY_RESET)) {
return 0;
}
arch_delay_ms(1);
}
return -1;
}
int phy_8720_auto_negotiate(emac_phy_cfg_t *cfg)
{
uint16_t regval = 0;
uint16_t phyid1 = 0, phyid2 = 0;
uint16_t advertise = 0;
uint16_t lpa = 0;
uint32_t timeout = 100; //10s,in 100ms
if (0 != emac_phy_reg_read(PHY_PHYID1, &phyid1)) {
return -1;
}
if (0 != emac_phy_reg_read(PHY_PHYID2, &phyid2)) {
return -1;
}
if (cfg->phy_id != (((phyid1 << 16) | phyid2) & 0x000FFFF0)) {
/* ID error */
return -1;
} else {
cfg->phy_id = (phyid1 << 16) | phyid2;
}
if (0 != emac_phy_reg_read(PHY_BCR, &regval)) {
return -1;
}
regval &= ~PHY_AUTONEGOTIATION;
regval &= ~(PHY_LOOPBACK | PHY_POWERDOWN);
regval |= PHY_ISOLATE;
if (emac_phy_reg_write(PHY_BCR, regval) != 0) {
return -1;
}
/* set advertisement mode */
advertise = PHY_ADVERTISE_100BASETXFULL | PHY_ADVERTISE_100BASETXHALF |
PHY_ADVERTISE_10BASETXFULL | PHY_ADVERTISE_10BASETXHALF |
PHY_ADVERTISE_8023;
if (emac_phy_reg_write(PHY_ADVERTISE, advertise) != 0) {
return -1;
}
arch_delay_ms(16);
if (0 != emac_phy_reg_read(PHY_BCR, &regval)) {
return -1;
}
arch_delay_ms(16);
regval |= (PHY_FULLDUPLEX_100M | PHY_AUTONEGOTIATION);
if (emac_phy_reg_write(PHY_BCR, regval) != 0) {
return -1;
}
arch_delay_ms(16);
regval |= PHY_RESTART_AUTONEGOTIATION;
regval &= ~PHY_ISOLATE;
if (emac_phy_reg_write(PHY_BCR, regval) != 0) {
return -1;
}
arch_delay_ms(100);
while (1) {
if (0 != emac_phy_reg_read(PHY_BSR, &regval)) {
return -1;
}
if (regval & PHY_AUTONEGO_COMPLETE) {
/* complete */
break;
}
if (!(--timeout)) {
return -1;
}
arch_delay_ms(100);
}
arch_delay_ms(100);
if (0 != emac_phy_reg_read(PHY_LPA, &lpa)) {
return -1;
}
if (((advertise & lpa) & PHY_ADVERTISE_100BASETXFULL) != 0) {
/* 100BaseTX and Full Duplex */
cfg->full_duplex = 1;
cfg->speed = 100;
cfg->phy_state = PHY_STATE_READY;
} else if (((advertise & lpa) & PHY_ADVERTISE_10BASETXFULL) != 0) {
/* 10BaseT and Full Duplex */
cfg->full_duplex = 1;
cfg->speed = 10;
cfg->phy_state = PHY_STATE_READY;
} else if (((advertise & lpa) & PHY_ADVERTISE_100BASETXHALF) != 0) {
/* 100BaseTX and half Duplex */
cfg->full_duplex = 0;
cfg->speed = 100;
cfg->phy_state = PHY_STATE_READY;
} else if (((advertise & lpa) & PHY_ADVERTISE_10BASETXHALF) != 0) {
/* 10BaseT and half Duplex */
cfg->full_duplex = 0;
cfg->speed = 10;
cfg->phy_state = PHY_STATE_READY;
}
return 0;
}
int phy_8720_link_up(emac_phy_cfg_t *cfg)
{
uint16_t phy_bsr = 0;
uint16_t phy_sr = 0;
arch_delay_ms(16);
if (0 != emac_phy_reg_read(PHY_BSR, &phy_bsr)) {
return -1;
}
arch_delay_ms(16);
if (!(PHY_LINKED_STATUS & phy_bsr)) {
return ERROR;
}
arch_delay_ms(16);
if (0 != emac_phy_reg_read(PHY_SR, &phy_sr)) {
return -1;
}
if ((phy_bsr & PHY_BSR_100BASETXFULL) && PHY_SR_SPEED_MODE_COMPARE(phy_sr, PHY_SR_SPEED_100BASETXFULL)) {
/* 100BaseTX and Full Duplex */
cfg->full_duplex = 1;
cfg->speed = 100;
cfg->phy_state = PHY_STATE_UP;
} else if ((phy_bsr & PHY_BSR_10BASETXFULL) && PHY_SR_SPEED_MODE_COMPARE(phy_sr, PHY_SR_SPEED_10BASETXFULL)) {
/* 10BaseT and Full Duplex */
cfg->full_duplex = 1;
cfg->speed = 10;
cfg->phy_state = PHY_STATE_UP;
} else if ((phy_bsr & PHY_BSR_100BASETXHALF) && PHY_SR_SPEED_MODE_COMPARE(phy_sr, PHY_SR_SPEED_100BASETXHALF)) {
/* 100BaseTX and half Duplex */
cfg->full_duplex = 0;
cfg->speed = 100;
cfg->phy_state = PHY_STATE_UP;
} else if ((phy_bsr & PHY_BSR_10BASETXHALF) && PHY_SR_SPEED_MODE_COMPARE(phy_sr, PHY_SR_SPEED_10BASETXHALF)) {
/* 10BaseT and half Duplex */
cfg->full_duplex = 0;
cfg->speed = 10;
cfg->phy_state = PHY_STATE_UP;
} else {
/* 10BaseT and half Duplex */
cfg->full_duplex = -1;
cfg->speed = -1;
cfg->phy_state = PHY_STATE_DOWN;
return -1;
}
return 0;
}
/******************************************************************************
* @brief Use energy detector for cable plug in/out detect.
*
* @param cfg: EMAC PHY configuration pointer
*
* @return SUCCESS or ERROR
*
*******************************************************************************/
int phy_8720_poll_cable_status(emac_phy_cfg_t *cfg)
{
uint16_t phy_regval = 0;
CHECK_PARAM(NULL != phy_8720_cfg);
if (0 != emac_phy_reg_read(PHY_CTRL_STATUS, &phy_regval)) {
return -1;
}
phy_8720_cfg->phy_state = (PHY_CTRL_STATUS_ENERGYON & phy_regval) ?
PHY_STATE_UP :
PHY_STATE_DOWN;
return !!(PHY_CTRL_STATUS_ENERGYON & phy_regval);
}
/****************************************************************************/ /**
* @brief Initialize EMAC PHY module
*
* @param cfg: EMAC PHY configuration pointer
*
* @return SUCCESS or ERROR
*
*******************************************************************************/
int emac_phy_init(emac_phy_cfg_t *cfg)
{
uint16_t phyReg;
CHECK_PARAM(NULL != cfg);
phy_8720_cfg = cfg;
emac_phy_set_address(cfg->phy_address);
if (0 != phy_8720_reset()) {
return -1;
}
if (cfg->auto_negotiation) {
/*
uint32_t cnt=0;
do{
if(emac_phy_reg_read(PHY_BSR, &phyReg) != SUCCESS){
return ERROR;
}
cnt++;
if(cnt>PHY_LINK_TO){
return ERROR;
}
}while((phyReg & PHY_LINKED_STATUS) != PHY_LINKED_STATUS);
*/
if (0 != phy_8720_auto_negotiate(cfg)) {
return -1;
}
} else {
if (emac_phy_reg_read(PHY_BCR, &phyReg) != 0) {
return -1;
}
phyReg &= (~PHY_FULLDUPLEX_100M);
if (cfg->speed == 10) {
if (cfg->full_duplex == 1) {
phyReg |= PHY_FULLDUPLEX_10M;
} else {
phyReg |= PHY_HALFDUPLEX_10M;
}
} else {
if (cfg->full_duplex == 1) {
phyReg |= PHY_FULLDUPLEX_100M;
} else {
phyReg |= PHY_HALFDUPLEX_100M;
}
}
if ((emac_phy_reg_write(PHY_BCR, phyReg)) != 0) {
return -1;
}
}
emac_phy_config_full_duplex(cfg->full_duplex);
return phy_8720_link_up(cfg);
}
emac_phy_status_t ethernet_phy_status_get()
{
CHECK_PARAM(NULL != phy_8720_cfg);
if ((100 == phy_8720_cfg->speed) &&
(phy_8720_cfg->full_duplex) &&
(PHY_STATE_UP == phy_8720_cfg->phy_state)) {
return EMAC_PHY_STAT_100MBITS_FULLDUPLEX;
} else if (PHY_STATE_UP == phy_8720_cfg->phy_state) {
return EMAC_PHY_STAT_LINK_UP;
} else {
return EMAC_PHY_STAT_LINK_DOWN;
}
}

4548
components/lwip/CHANGELOG Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,95 @@
################# Add global include #################
list(APPEND ADD_INCLUDE
"${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}/src/include/lwip"
"${CMAKE_CURRENT_SOURCE_DIR}/src/include/lwip/apps"
"${CMAKE_CURRENT_SOURCE_DIR}/src/include"
"${CMAKE_CURRENT_SOURCE_DIR}/system"
)
#######################################################
# list(REMOVE_ITEM ADD_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/src/apps/http/fsdata.h"
# )
################# Add private include #################
# list(APPEND ADD_PRIVATE_INCLUDE
# )
#######################################################
############## Add current dir source files ###########
file(GLOB_RECURSE sources
"${CMAKE_CURRENT_SOURCE_DIR}/src/apps/lwiperf/lwiperf.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/apps/http/fs.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/apps/http/fsdata_custom.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/apps/http/fsdata.c"
# "${CMAKE_CURRENT_SOURCE_DIR}/src/apps/http/httpd.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/api/api_lib.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/api/api_msg.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/api/err.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/api/netbuf.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/api/netdb.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/api/netifapi.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/api/sockets.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/api/tcpip.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/ipv4/autopip.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/ipv4/dhcp.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/ipv4/etharp.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/ipv4/icmp.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/ipv4/igmp.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/ipv4/ip4_addr.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/ipv4/ip4_frag.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/ipv4/ip4.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/def.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/dns.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/inet_chksum.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/init.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/ip.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/mem.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/memp.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/netif.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/pbuf.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/raw.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/stats.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/sys.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/tcp_in.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/tcp_out.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/tcp.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/timeouts.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/core/udp.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/netif/ethernet.c"
"${CMAKE_CURRENT_SOURCE_DIR}/system/os/sys_arch.c"
)
list(APPEND ADD_SRCS ${sources})
# aux_source_directory(src ADD_SRCS)
# list(REMOVE_ITEM ADD_SRCS "${CMAKE_CURRENT_SOURCE_DIR}")
#######################################################
# list(REMOVE_ITEM ADD_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/src/apps/http/fsdata.c"
# )
########### Add required/dependent components #########
list(APPEND ADD_REQUIREMENTS freertos)
#######################################################
############ Add static libs ##########################
#list(APPEND ADD_STATIC_LIB "libxxx.a")
#######################################################
############ Add dynamic libs #########################
# list(APPEND ADD_DYNAMIC_LIB "libxxx.so"
# )
#######################################################
############ Add global compile option ################
#add components denpend on this component
#list(APPEND ADD_DEFINITIONS -Dxxx=yyy)
#######################################################
############ Add private compile option ################
#add compile option for this component that won't affect other modules
# list(APPEND ADD_PRIVATE_DEFINITIONS -Dxxx)
#######################################################
generate_library()

33
components/lwip/COPYING Normal file
View File

@ -0,0 +1,33 @@
/*
* Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
* This file is part of the lwIP TCP/IP stack.
*
* Author: Adam Dunkels <adam@sics.se>
*
*/

11
components/lwip/FEATURES Normal file
View File

@ -0,0 +1,11 @@
lwIP is a small independent implementation of the TCP/IP protocol suite targeted at embedded systems.
The focus of the lwIP TCP/IP implementation is to reduce resource usage while still having a full scale TCP. This makes lwIP suitable for use in embedded systems with tens of kilobytes of free RAM and room for around 40 kilobytes of code ROM.
Main features include:
- Protocols: IP, IPv6, ICMP, ND, MLD, UDP, TCP, IGMP, ARP, PPPoS, PPPoE, 6LowPAN (via IEEE 802.15.4, BLE or ZEP; since v2.1.0)
- DHCP client, stateless DHCPv6 (since v2.1.0), DNS client (incl. mDNS hostname resolver), AutoIP/APIPA (Zeroconf), SNMP agent (v1, v2c, v3 (since v2.1.0), private MIB support & MIB compiler)
- APIs: specialized APIs for enhanced performance & zero copy, optional Berkeley-alike socket API
- Extended features: IP forwarding over multiple network interfaces
- Extended TCP features: congestion control, RTT estimation and fast recovery/fast retransmit, sending SACKs (since v2.1.0), "altcp": nearly transparent TLS for any tcp pcb (since v2.1.0)
- Addon applications: HTTP server (HTTPS via altcp), HTTP(S) client (since v2.1.0), SNTP client, SMTP client (SMTPS via altcp), ping, NetBIOS nameserver, mDNS responder, MQTT client (TLS support since v2.1.0), TFTP server, iPerf2 counterpart

5
components/lwip/FILES Normal file
View File

@ -0,0 +1,5 @@
src/ - The source code for the lwIP TCP/IP stack.
doc/ - The documentation for lwIP.
test/ - Some code to test whether the sources do what they should.
See also the FILES file in each subdirectory.

106
components/lwip/README Normal file
View File

@ -0,0 +1,106 @@
INTRODUCTION
lwIP is a small independent implementation of the TCP/IP protocol suite.
The focus of the lwIP TCP/IP implementation is to reduce the RAM usage
while still having a full scale TCP. This making lwIP suitable for use
in embedded systems with tens of kilobytes of free RAM and room for
around 40 kilobytes of code ROM.
lwIP was originally developed by Adam Dunkels at the Computer and Networks
Architectures (CNA) lab at the Swedish Institute of Computer Science (SICS)
and is now developed and maintained by a worldwide network of developers.
FEATURES
* IP (Internet Protocol, IPv4 and IPv6) including packet forwarding over
multiple network interfaces
* ICMP (Internet Control Message Protocol) for network maintenance and debugging
* IGMP (Internet Group Management Protocol) for multicast traffic management
* MLD (Multicast listener discovery for IPv6). Aims to be compliant with
RFC 2710. No support for MLDv2
* ND (Neighbor discovery and stateless address autoconfiguration for IPv6).
Aims to be compliant with RFC 4861 (Neighbor discovery) and RFC 4862
(Address autoconfiguration)
* DHCP, AutoIP/APIPA (Zeroconf) and (stateless) DHCPv6
* UDP (User Datagram Protocol) including experimental UDP-lite extensions
* TCP (Transmission Control Protocol) with congestion control, RTT estimation
fast recovery/fast retransmit and sending SACKs
* raw/native API for enhanced performance
* Optional Berkeley-like socket API
* TLS: optional layered TCP ("altcp") for nearly transparent TLS for any
TCP-based protocol (ported to mbedTLS) (see changelog for more info)
* PPPoS and PPPoE (Point-to-point protocol over Serial/Ethernet)
* DNS (Domain name resolver incl. mDNS)
* 6LoWPAN (via IEEE 802.15.4, BLE or ZEP)
APPLICATIONS
* HTTP server with SSI and CGI (HTTPS via altcp)
* SNMPv2c agent with MIB compiler (Simple Network Management Protocol), v3 via altcp
* SNTP (Simple network time protocol)
* NetBIOS name service responder
* MDNS (Multicast DNS) responder
* iPerf server implementation
* MQTT client (TLS support via altcp)
LICENSE
lwIP is freely available under a BSD license.
DEVELOPMENT
lwIP has grown into an excellent TCP/IP stack for embedded devices,
and developers using the stack often submit bug fixes, improvements,
and additions to the stack to further increase its usefulness.
Development of lwIP is hosted on Savannah, a central point for
software development, maintenance and distribution. Everyone can
help improve lwIP by use of Savannah's interface, Git and the
mailing list. A core team of developers will commit changes to the
Git source tree.
The lwIP TCP/IP stack is maintained in the 'lwip' Git module and
contributions (such as platform ports) are in the 'contrib' Git module.
See doc/savannah.txt for details on Git server access for users and
developers.
The current Git trees are web-browsable:
http://git.savannah.gnu.org/cgit/lwip.git
http://git.savannah.gnu.org/cgit/lwip/lwip-contrib.git
Submit patches and bugs via the lwIP project page:
http://savannah.nongnu.org/projects/lwip/
Continuous integration builds (GCC, clang):
https://travis-ci.org/yarrick/lwip-merged
DOCUMENTATION
Self documentation of the source code is regularly extracted from the current
Git sources and is available from this web page:
http://www.nongnu.org/lwip/
There is now a constantly growing wiki about lwIP at
http://lwip.wikia.com/wiki/LwIP_Wiki
Also, there are mailing lists you can subscribe at
http://savannah.nongnu.org/mail/?group=lwip
plus searchable archives:
http://lists.nongnu.org/archive/html/lwip-users/
http://lists.nongnu.org/archive/html/lwip-devel/
lwIP was originally written by Adam Dunkels:
http://dunkels.com/adam/
Reading Adam's papers, the files in docs/, browsing the source code
documentation and browsing the mailing list archives is a good way to
become familiar with the design of lwIP.
Adam Dunkels <adam@sics.se>
Leon Woestenberg <leon.woestenberg@gmx.net>

278
components/lwip/UPGRADING Normal file
View File

@ -0,0 +1,278 @@
This file lists major changes between release versions that require
ports or applications to be changed. Use it to update a port or an
application written for an older version of lwIP to correctly work
with newer versions.
(git master)
* [Enter new changes just after this line - do not remove this line]
(2.1.0)
++ Application changes:
* Use the new altcp API for seamless TLS integration into existing TCP applications (see changelog)
* TCP only kills existing connections with a LOWER priority than the one currently being opened.
Previous implementations also kill existing connections of the SAME priority.
* ip4_route_src: parameter order is reversed: ip4_route_src(dest, src) -> ip4_route_src(src, dest)
to make parameter order consistent with other ip*_route*() functions.
Same also applies to LWIP_HOOK_IP4_ROUTE_SRC() parameter order.
* pbuf API: pbuf->type (an u8_t holding the enum 'pbuf_type') has changed to only hold a
description of the pbuf (e.g. data following pbuf struct, data volatile, allocation
source heap/pool/etc.). As a consequence, applications can't test pbuf->type any more.
Use pbuf_match_type(pbuf, type) instead.
* socket API: according to the standard, SO_ERROR now only returns asynchronous errors.
All other/normal/synchronous errors are (and always were) available via 'errno'.
LWIP_SOCKET_SET_ERRNO has been removed - 'errno' is always set - and required!
* httpd LWIP_HTTPD_CGI_SSI: httpd_cgi_handler() has an additional parameter "struct fs_file *"
++ Port changes:
* tcpip_trycallback() was renamed to tcpip_callbackmsg_trycallback() to avoid confusion
with tcpip_try_callback()
* compatibility headers: moved from 'src/include/posix' to 'src/include/compat/posix',
'src/include/compat/stdc' etc.
* The IPv6 implementation now supports address scopes. (See LWIP_IPV6_SCOPES documentation
and ip6_zone.h for more documentation)
* LWIP_HOOK_DHCP_APPEND_OPTIONS() has changed, see description in opt.h (options_out_len is not
available in struct dhcp any more)
* Added debug helper asserts to ensure threading/locking requirements are met (define
LWIP_MARK_TCPIP_THREAD() and LWIP_ASSERT_CORE_LOCKED()).
* Added sys_mbox_trypost_fromisr() and tcpip_callbackmsg_trycallback_fromisr()
These can be used to post preallocated messages from an ISR to the tcpip thread
(e.g. when using FreeRTOS)
(2.0.2)
++ Application changes:
* slipif: The way to pass serial port number has changed. netif->num is not
supported any more, netif->state is interpreted as an u8_t port number now
(it's not a POINTER to an u8_t any more!)
(2.0.1)
++ Application changes:
* UDP does NOT receive multicast traffic from ALL netifs on an UDP PCB bound to a specific
netif any more. Users need to bind to IP_ADDR_ANY to receive multicast traffic and compare
ip_current_netif() to the desired netif for every packet.
See bug #49662 for an explanation.
(2.0.0)
++ Application changes:
* Changed netif "up" flag handling to be an administrative flag (as opposed to the previous meaning of
"ip4-address-valid", a netif will now not be used for transmission if not up) -> even a DHCP netif
has to be set "up" before starting the DHCP client
* Added IPv6 support (dual-stack or IPv4/IPv6 only)
* Changed ip_addr_t to be a union in dual-stack mode (use ip4_addr_t where referring to IPv4 only).
* Major rewrite of SNMP (added MIB parser that creates code stubs for custom MIBs);
supports SNMPv2c (experimental v3 support)
* Moved some core applications from contrib repository to src/apps (and include/lwip/apps)
+++ Raw API:
* Changed TCP listen backlog: removed tcp_accepted(), added the function pair tcp_backlog_delayed()/
tcp_backlog_accepted() to explicitly delay backlog handling on a connection pcb
+++ Socket API:
* Added an implementation for posix sendmsg()
* Added LWIP_FIONREAD_LINUXMODE that makes ioctl/FIONREAD return the size of the next pending datagram
++ Port changes
+++ new files:
* MANY new and moved files!
* Added src/Filelists.mk for use in Makefile projects
* Continued moving stack-internal parts from abc.h to abc_priv.h in sub-folder "priv"
to let abc.h only contain the actual application programmer's API
+++ sys layer:
* Made LWIP_TCPIP_CORE_LOCKING==1 the default as it usually performs better than
the traditional message passing (although with LWIP_COMPAT_MUTEX you are still
open to priority inversion, so this is not recommended any more)
* Added LWIP_NETCONN_SEM_PER_THREAD to use one "op_completed" semaphore per thread
instead of using one per netconn (these semaphores are used even with core locking
enabled as some longer lasting functions like big writes still need to delay)
* Added generalized abstraction for itoa(), strnicmp(), stricmp() and strnstr()
in def.h (to be overridden in cc.h) instead of config
options for netbiosns, httpd, dns, etc. ...
* New abstraction for hton* and ntoh* functions in def.h.
To override them, use the following in cc.h:
#define lwip_htons(x) <your_htons>
#define lwip_htonl(x) <your_htonl>
+++ new options:
* TODO
+++ new pools:
* Added LWIP_MEMPOOL_* (declare/init/alloc/free) to declare private memp pools
that share memp.c code but do not have to be made global via lwippools.h
* Added pools for IPv6, MPU_COMPATIBLE, dns-api, netif-api, etc.
* added hook LWIP_HOOK_MEMP_AVAILABLE() to get informed when a memp pool was empty and an item
is now available
* Signature of LWIP_HOOK_VLAN_SET macro was changed
* LWIP_DECLARE_MEMORY_ALIGNED() may be used to declare aligned memory buffers (mem/memp)
or to move buffers to dedicated memory using compiler attributes
* Standard C headers are used to define sized types and printf formatters
(disable by setting LWIP_NO_STDINT_H=1 or LWIP_NO_INTTYPES_H=1 if your compiler
does not support these)
++ Major bugfixes/improvements
* Added IPv6 support (dual-stack or IPv4/IPv6 only)
* Major rewrite of PPP (incl. keep-up with apache pppd)
see doc/ppp.txt for an upgrading how-to
* Major rewrite of SNMP (incl. MIB parser)
* Fixed timing issues that might have lead to losing a DHCP lease
* Made rx processing path more robust against crafted errors
* TCP window scaling support
* modification of api modules to support FreeRTOS-MPU (don't pass stack-pointers to other threads)
* made DNS client more robust
* support PBUF_REF for RX packets
* LWIP_NETCONN_FULLDUPLEX allows netconn/sockets to be used for reading/writing from separate
threads each (needs LWIP_NETCONN_SEM_PER_THREAD)
* Moved and reordered stats (mainly memp/mib2)
(1.4.0)
++ Application changes:
* Replaced struct ip_addr by typedef ip_addr_t (struct ip_addr is kept for
compatibility to old applications, but will be removed in the future).
* Renamed mem_realloc() to mem_trim() to prevent confusion with realloc()
+++ Raw API:
* Changed the semantics of tcp_close() (since it was rather a
shutdown before): Now the application does *NOT* get any calls to the recv
callback (aside from NULL/closed) after calling tcp_close()
* When calling tcp_abort() from a raw API TCP callback function,
make sure you return ERR_ABRT to prevent accessing unallocated memory.
(ERR_ABRT now means the applicaiton has called tcp_abort!)
+++ Netconn API:
* Changed netconn_receive() and netconn_accept() to return
err_t, not a pointer to new data/netconn.
+++ Socket API:
* LWIP_SO_RCVTIMEO: when accept() or recv() time out, they
now set errno to EWOULDBLOCK/EAGAIN, not ETIMEDOUT.
* Added a minimal version of posix fctl() to have a
standardised way to set O_NONBLOCK for nonblocking sockets.
+++ all APIs:
* correctly implemented SO(F)_REUSEADDR
++ Port changes
+++ new files:
* Added 4 new files: def.c, timers.c, timers.h, tcp_impl.h:
* Moved stack-internal parts of tcp.h to tcp_impl.h, tcp.h now only contains
the actual application programmer's API
* Separated timer implementation from sys.h/.c, moved to timers.h/.c;
Added timer implementation for NO_SYS==1, set NO_SYS_NO_TIMERS==1 if you
still want to use your own timer implementation for NO_SYS==0 (as before).
+++ sys layer:
* Converted mbox- and semaphore-functions to take pointers to sys_mbox_t/
sys_sem_t;
* Converted sys_mbox_new/sys_sem_new to take pointers and return err_t;
* Added Mutex concept in sys_arch (define LWIP_COMPAT_MUTEX to let sys.h use
binary semaphores instead of mutexes - as before)
+++ new options:
* Don't waste memory when chaining segments, added option TCP_OVERSIZE to
prevent creating many small pbufs when calling tcp_write with many small
blocks of data. Instead, pbufs are allocated larger than needed and the
space is used for later calls to tcp_write.
* Added LWIP_NETIF_TX_SINGLE_PBUF to always copy to try to create single pbufs
in tcp_write/udp_send.
* Added an additional option LWIP_ETHERNET to support ethernet without ARP
(necessary for pure PPPoE)
* Add MEMP_SEPARATE_POOLS to place memory pools in separate arrays. This may
be used to place these pools into user-defined memory by using external
declaration.
* Added TCP_SNDQUEUELOWAT corresponding to TCP_SNDLOWAT
+++ new pools:
* Netdb uses a memp pool for allocating memory when getaddrinfo() is called,
so MEMP_NUM_NETDB has to be set accordingly.
* DNS_LOCAL_HOSTLIST_IS_DYNAMIC uses a memp pool instead of the heap, so
MEMP_NUM_LOCALHOSTLIST has to be set accordingly.
* Snmp-agent uses a memp pools instead of the heap, so MEMP_NUM_SNMP_* have
to be set accordingly.
* PPPoE uses a MEMP pool instead of the heap, so MEMP_NUM_PPPOE_INTERFACES
has to be set accordingly
* Integrated loopif into netif.c - loopif does not have to be created by the
port any more, just define LWIP_HAVE_LOOPIF to 1.
* Added define LWIP_RAND() for lwip-wide randomization (needs to be defined
in cc.h, e.g. used by igmp)
* Added printf-formatter X8_F to printf u8_t as hex
* The heap now may be moved to user-defined memory by defining
LWIP_RAM_HEAP_POINTER as a void pointer to that memory's address
* added autoip_set_struct() and dhcp_set_struct() to let autoip and dhcp work
with user-allocated structs instead of calling mem_malloc
* Added const char* name to mem- and memp-stats for easier debugging.
* Calculate the TCP/UDP checksum while copying to only fetch data once:
Define LWIP_CHKSUM_COPY to a memcpy-like function that returns the checksum
* Added SO_REUSE_RXTOALL to pass received UDP broadcast/multicast packets to
more than one pcb.
* Changed the semantics of ARP_QUEUEING==0: ARP_QUEUEING now cannot be turned
off any more, if this is set to 0, only one packet (the most recent one) is
queued (like demanded by RFC 1122).
++ Major bugfixes/improvements
* Implemented tcp_shutdown() to only shut down one end of a connection
* Implemented shutdown() at socket- and netconn-level
* Added errorset support to select() + improved select speed overhead
* Merged pppd to v2.3.11 (including some backported bugfixes from 2.4.x)
* Added timer implementation for NO_SYS==1 (may be disabled with NO_SYS_NO_TIMERS==1
* Use macros defined in ip_addr.h to work with IP addresses
* Implemented many nonblocking socket/netconn functions
* Fixed ARP input processing: only add a new entry if a request was directed as us
* mem_realloc() to mem_trim() to prevent confusion with realloc()
* Some improvements for AutoIP (don't route/forward link-local addresses, don't break
existing connections when assigning a routable address)
* Correctly handle remote side overrunning our rcv_wnd in ooseq case
* Removed packing from ip_addr_t, the packed version is now only used in protocol headers
* Corrected PBUF_POOL_BUFSIZE for ports where ETH_PAD_SIZE > 0
* Added support for static ARP table entries
(STABLE-1.3.2)
* initial version of this file

View File

@ -0,0 +1,9 @@
doxygen/ - Configuration files and scripts to create the lwIP doxygen source
documentation (found at http://www.nongnu.org/lwip/)
savannah.txt - How to obtain the current development source code.
contrib.txt - How to contribute to lwIP as a developer.
rawapi.txt - The documentation for the core API of lwIP.
Also provides an overview about the other APIs and multithreading.
sys_arch.txt - The documentation for a system abstraction layer of lwIP.
ppp.txt - Documentation of the PPP interface for lwIP.

View File

@ -0,0 +1,119 @@
void eth_mac_irq()
{
/* Service MAC IRQ here */
/* Allocate pbuf from pool (avoid using heap in interrupts) */
struct pbuf *p = pbuf_alloc(PBUF_RAW, eth_data_count, PBUF_POOL);
if (p != NULL) {
/* Copy ethernet frame into pbuf */
pbuf_take(p, eth_data, eth_data_count);
/* Put in a queue which is processed in main loop */
if (!queue_try_put(&queue, p)) {
/* queue is full -> packet loss */
pbuf_free(p);
}
}
}
static err_t netif_output(struct netif *netif, struct pbuf *p)
{
LINK_STATS_INC(link.xmit);
/* Update SNMP stats (only if you use SNMP) */
MIB2_STATS_NETIF_ADD(netif, ifoutoctets, p->tot_len);
int unicast = ((p->payload[0] & 0x01) == 0);
if (unicast) {
MIB2_STATS_NETIF_INC(netif, ifoutucastpkts);
} else {
MIB2_STATS_NETIF_INC(netif, ifoutnucastpkts);
}
lock_interrupts();
pbuf_copy_partial(p, mac_send_buffer, p->tot_len, 0);
/* Start MAC transmit here */
unlock_interrupts();
return ERR_OK;
}
static void netif_status_callback(struct netif *netif)
{
printf("netif status changed %s\n", ip4addr_ntoa(netif_ip4_addr(netif)));
}
static err_t netif_init(struct netif *netif)
{
netif->linkoutput = netif_output;
netif->output = etharp_output;
netif->output_ip6 = ethip6_output;
netif->mtu = ETHERNET_MTU;
netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_ETHERNET | NETIF_FLAG_IGMP | NETIF_FLAG_MLD6;
MIB2_INIT_NETIF(netif, snmp_ifType_ethernet_csmacd, 100000000);
SMEMCPY(netif->hwaddr, your_mac_address_goes_here, ETH_HWADDR_LEN);
netif->hwaddr_len = ETH_HWADDR_LEN;
return ERR_OK;
}
void main(void)
{
struct netif netif;
lwip_init();
netif_add(&netif, IP4_ADDR_ANY, IP4_ADDR_ANY, IP4_ADDR_ANY, NULL, netif_init, netif_input);
netif.name[0] = 'e';
netif.name[1] = '0';
netif_create_ip6_linklocal_address(&netif, 1);
netif.ip6_autoconfig_enabled = 1;
netif_set_status_callback(&netif, netif_status_callback);
netif_set_default(&netif);
netif_set_up(&netif);
/* Start DHCP and HTTPD */
dhcp_start(&netif);
httpd_init();
while (1) {
/* Check link state, e.g. via MDIO communication with PHY */
if (link_state_changed()) {
if (link_is_up()) {
netif_set_link_up(&netif);
} else {
netif_set_link_down(&netif);
}
}
/* Check for received frames, feed them to lwIP */
lock_interrupts();
struct pbuf *p = queue_try_get(&queue);
unlock_interrupts();
if (p != NULL) {
LINK_STATS_INC(link.recv);
/* Update SNMP stats (only if you use SNMP) */
MIB2_STATS_NETIF_ADD(netif, ifinoctets, p->tot_len);
int unicast = ((p->payload[0] & 0x01) == 0);
if (unicast) {
MIB2_STATS_NETIF_INC(netif, ifinucastpkts);
} else {
MIB2_STATS_NETIF_INC(netif, ifinnucastpkts);
}
if (netif.input(p, &netif) != ERR_OK) {
pbuf_free(p);
}
}
/* Cyclic lwIP timers check */
sys_check_timeouts();
/* your application goes here */
}
}

View File

@ -0,0 +1,44 @@
typedef struct my_custom_pbuf {
struct pbuf_custom p;
void *dma_descriptor;
} my_custom_pbuf_t;
LWIP_MEMPOOL_DECLARE(RX_POOL, 10, sizeof(my_custom_pbuf_t), "Zero-copy RX PBUF pool");
void my_pbuf_free_custom(void *p)
{
SYS_ARCH_DECL_PROTECT(old_level);
my_custom_pbuf_t *my_puf = (my_custom_pbuf_t *)p;
// invalidate data cache here - lwIP and/or application may have written into buffer!
// (invalidate is faster than flushing, and noone needs the correct data in the buffer)
invalidate_cpu_cache(p->payload, p->tot_len);
SYS_ARCH_PROTECT(old_level);
free_rx_dma_descriptor(my_pbuf->dma_descriptor);
LWIP_MEMPOOL_FREE(RX_POOL, my_pbuf);
SYS_ARCH_UNPROTECT(old_level);
}
void eth_rx_irq()
{
dma_descriptor *dma_desc = get_RX_DMA_descriptor_from_ethernet();
my_custom_pbuf_t *my_pbuf = (my_custom_pbuf_t *)LWIP_MEMPOOL_ALLOC(RX_POOL);
my_pbuf->p.custom_free_function = my_pbuf_free_custom;
my_pbuf->dma_descriptor = dma_desc;
invalidate_cpu_cache(dma_desc->rx_data, dma_desc->rx_length);
struct pbuf *p = pbuf_alloced_custom(PBUF_RAW,
dma_desc->rx_length,
PBUF_REF,
&my_pbuf->p,
dma_desc->rx_data,
dma_desc->max_buffer_size);
if (netif->input(p, netif) != ERR_OK) {
pbuf_free(p);
}
}

View File

@ -0,0 +1,58 @@
1 Introduction
This document describes some guidelines for people participating
in lwIP development.
2 How to contribute to lwIP
Here is a short list of suggestions to anybody working with lwIP and
trying to contribute bug reports, fixes, enhancements, platform ports etc.
First of all as you may already know lwIP is a volunteer project so feedback
to fixes or questions might often come late. Hopefully the bug and patch tracking
features of Savannah help us not lose users' input.
2.1 Source code style:
1. do not use tabs.
2. indentation is two spaces per level (i.e. per tab).
3. end debug messages with a trailing newline (\n).
4. one space between keyword and opening bracket.
5. no space between function and opening bracket.
6. one space and no newline before opening curly braces of a block.
7. closing curly brace on a single line.
8. spaces surrounding assignment and comparisons.
9. don't initialize static and/or global variables to zero, the compiler takes care of that.
10. use current source code style as further reference.
2.2 Source code documentation style:
1. JavaDoc compliant and Doxygen compatible.
2. Function documentation above functions in .c files, not .h files.
(This forces you to synchronize documentation and implementation.)
3. Use current documentation style as further reference.
2.3 Bug reports and patches:
1. Make sure you are reporting bugs or send patches against the latest
sources. (From the latest release and/or the current Git sources.)
2. If you think you found a bug make sure it's not already filed in the
bugtracker at Savannah.
3. If you have a fix put the patch on Savannah. If it is a patch that affects
both core and arch specific stuff please separate them so that the core can
be applied separately while leaving the other patch 'open'. The preferred way
is to NOT touch archs you can't test and let maintainers take care of them.
This is a good way to see if they are used at all - the same goes for unix
netifs except tapif.
4. Do not file a bug and post a fix to it to the patch area. Either a bug report
or a patch will be enough.
If you correct an existing bug then attach the patch to the bug rather than creating a new entry in the patch area.
5. Patches should be specific to a single change or to related changes. Do not mix bugfixes with spelling and other
trivial fixes unless the bugfix is trivial too. Do not reorganize code and rename identifiers in the same patch you
change behaviour if not necessary. A patch is easier to read and understand if it's to the point and short than
if it's not to the point and long :) so the chances for it to be applied are greater.
2.4 Platform porters:
1. If you have ported lwIP to a platform (an OS, a uC/processor or a combination of these) and
you think it could benefit others[1] you might want discuss this on the mailing list. You
can also ask for Git access to submit and maintain your port in the contrib Git module.

View File

@ -0,0 +1 @@
doxygen lwip.Doxyfile

View File

@ -0,0 +1,3 @@
#!/bin/sh
doxygen lwip.Doxyfile

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,403 @@
/**
* @defgroup lwip lwIP
*
* @defgroup infrastructure Infrastructure
*
* @defgroup api APIs
* lwIP provides three Application Program's Interfaces (APIs) for programs
* to use for communication with the TCP/IP code:
* - low-level "core" / "callback" or @ref callbackstyle_api.
* - higher-level @ref sequential_api.
* - BSD-style @ref socket.
*
* The raw TCP/IP interface allows the application program to integrate
* better with the TCP/IP code. Program execution is event based by
* having callback functions being called from within the TCP/IP
* code. The TCP/IP code and the application program both run in the same
* thread. The sequential API has a much higher overhead and is not very
* well suited for small systems since it forces a multithreaded paradigm
* on the application.
*
* The raw TCP/IP interface is not only faster in terms of code execution
* time but is also less memory intensive. The drawback is that program
* development is somewhat harder and application programs written for
* the raw TCP/IP interface are more difficult to understand. Still, this
* is the preferred way of writing applications that should be small in
* code size and memory usage.
*
* All APIs can be used simultaneously by different application
* programs. In fact, the sequential API is implemented as an application
* program using the raw TCP/IP interface.
*
* Do not confuse the lwIP raw API with raw Ethernet or IP sockets.
* The former is a way of interfacing the lwIP network stack (including
* TCP and UDP), the latter refers to processing raw Ethernet or IP data
* instead of TCP connections or UDP packets.
*
* Raw API applications may never block since all packet processing
* (input and output) as well as timer processing (TCP mainly) is done
* in a single execution context.
*
* @defgroup callbackstyle_api "raw" APIs
* @ingroup api
* Non thread-safe APIs, callback style for maximum performance and minimum
* memory footprint.
* Program execution is driven by callbacks functions, which are then
* invoked by the lwIP core when activity related to that application
* occurs. A particular application may register to be notified via a
* callback function for events such as incoming data available, outgoing
* data sent, error notifications, poll timer expiration, connection
* closed, etc. An application can provide a callback function to perform
* processing for any or all of these events. Each callback is an ordinary
* C function that is called from within the TCP/IP code. Every callback
* function is passed the current TCP or UDP connection state as an
* argument. Also, in order to be able to keep program specific state,
* the callback functions are called with a program specified argument
* that is independent of the TCP/IP state.
* The raw API (sometimes called native API) is an event-driven API designed
* to be used without an operating system that implements zero-copy send and
* receive. This API is also used by the core stack for interaction between
* the various protocols. It is the only API available when running lwIP
* without an operating system.
*
* @defgroup sequential_api Sequential-style APIs
* @ingroup api
* Sequential-style APIs, blocking functions. More overhead, but can be called
* from any thread except TCPIP thread.
* The sequential API provides a way for ordinary, sequential, programs
* to use the lwIP stack. It is quite similar to the BSD socket API. The
* model of execution is based on the blocking open-read-write-close
* paradigm. Since the TCP/IP stack is event based by nature, the TCP/IP
* code and the application program must reside in different execution
* contexts (threads).
*
* @defgroup socket Socket API
* @ingroup api
* BSD-style socket API.\n
* Thread-safe, to be called from non-TCPIP threads only.\n
* Can be activated by defining @ref LWIP_SOCKET to 1.\n
* Header is in posix/sys/socket.h\n
* The socket API is a compatibility API for existing applications,
* currently it is built on top of the sequential API. It is meant to
* provide all functions needed to run socket API applications running
* on other platforms (e.g. unix / windows etc.). However, due to limitations
* in the specification of this API, there might be incompatibilities
* that require small modifications of existing programs.
*
* @defgroup netifs NETIFs
*
* @defgroup apps Applications
*/
/**
* @mainpage Overview
* @verbinclude "README"
*/
/**
* @page upgrading Upgrading
* @verbinclude "UPGRADING"
*/
/**
* @page changelog Changelog
*
* 2.1.0
* -----
* * Support TLS via new @ref altcp_api connection API (https, smtps, mqtt over TLS)
* * Switch to cmake as the main build system (Makefile file lists are still
* maintained for now)
* * Improve IPv6 support: support address scopes, support stateless DHCPv6, bugfixes
* * Add debug helper asserts to ensure threading/locking requirements are met
* * Add sys_mbox_trypost_fromisr() and tcpip_callbackmsg_trycallback_fromisr()
* (for FreeRTOS, mainly)
* * socket API: support poll(), sendmsg() and recvmsg(); fix problems on close
*
* Detailed Changelog
* ------------------
* @verbinclude "CHANGELOG"
*/
/**
* @page contrib How to contribute to lwIP
* @verbinclude "contrib.txt"
*/
/**
* @page pitfalls Common pitfalls
*
* Multiple Execution Contexts in lwIP code
* ========================================
*
* The most common source of lwIP problems is to have multiple execution contexts
* inside the lwIP code.
*
* lwIP can be used in two basic modes: @ref lwip_nosys (no OS/RTOS
* running on target system) or @ref lwip_os (there is an OS running
* on the target system).
*
* See also: @ref multithreading (especially the part about @ref LWIP_ASSERT_CORE_LOCKED()!)
*
* Mainloop Mode
* -------------
* In mainloop mode, only @ref callbackstyle_api can be used.
* The user has two possibilities to ensure there is only one
* exection context at a time in lwIP:
*
* 1) Deliver RX ethernet packets directly in interrupt context to lwIP
* by calling netif->input directly in interrupt. This implies all lwIP
* callback functions are called in IRQ context, which may cause further
* problems in application code: IRQ is blocked for a long time, multiple
* execution contexts in application code etc. When the application wants
* to call lwIP, it only needs to disable interrupts during the call.
* If timers are involved, even more locking code is needed to lock out
* timer IRQ and ethernet IRQ from each other, assuming these may be nested.
*
* 2) Run lwIP in a mainloop. There is example code here: @ref lwip_nosys.
* lwIP is _ONLY_ called from mainloop callstacks here. The ethernet IRQ
* has to put received telegrams into a queue which is polled in the
* mainloop. Ensure lwIP is _NEVER_ called from an interrupt, e.g.
* some SPI IRQ wants to forward data to udp_send() or tcp_write()!
*
* OS Mode
* -------
* In OS mode, @ref callbackstyle_api AND @ref sequential_api can be used.
* @ref sequential_api are designed to be called from threads other than
* the TCPIP thread, so there is nothing to consider here.
* But @ref callbackstyle_api functions must _ONLY_ be called from
* TCPIP thread. It is a common error to call these from other threads
* or from IRQ contexts. Ethernet RX needs to deliver incoming packets
* in the correct way by sending a message to TCPIP thread, this is
* implemented in tcpip_input().
* Again, ensure lwIP is _NEVER_ called from an interrupt, e.g.
* some SPI IRQ wants to forward data to udp_send() or tcp_write()!
*
* 1) tcpip_callback() can be used get called back from TCPIP thread,
* it is safe to call any @ref callbackstyle_api from there.
*
* 2) Use @ref LWIP_TCPIP_CORE_LOCKING. All @ref callbackstyle_api
* functions can be called when lwIP core lock is aquired, see
* @ref LOCK_TCPIP_CORE() and @ref UNLOCK_TCPIP_CORE().
* These macros cannot be used in an interrupt context!
* Note the OS must correctly handle priority inversion for this.
*
* Cache / DMA issues
* ==================
*
* DMA-capable ethernet hardware and zero-copy RX
* ----------------------------------------------
*
* lwIP changes the content of RECEIVED pbufs in the TCP code path.
* This implies one or more cacheline(s) of the RX pbuf become dirty
* and need to be flushed before the memory is handed over to the
* DMA ethernet hardware for the next telegram to be received.
* See http://lists.nongnu.org/archive/html/lwip-devel/2017-12/msg00070.html
* for a more detailed explanation.
* Also keep in mind the user application may also write into pbufs,
* so it is generally a bug not to flush the data cache before handing
* a buffer to DMA hardware.
*
* DMA-capable ethernet hardware and cacheline alignment
* -----------------------------------------------------
* Nice description about DMA capable hardware and buffer handling:
* http://www.pebblebay.com/a-guide-to-using-direct-memory-access-in-embedded-systems-part-two/
* Read especially sections "Cache coherency" and "Buffer alignment".
*/
/**
* @page bugs Reporting bugs
* Please report bugs in the lwIP bug tracker at savannah.\n
* BEFORE submitting, please check if the bug has already been reported!\n
* https://savannah.nongnu.org/bugs/?group=lwip
*/
/**
* @page zerocopyrx Zero-copy RX
* The following code is an example for zero-copy RX ethernet driver:
* @include ZeroCopyRx.c
*/
/**
* @defgroup lwip_nosys Mainloop mode ("NO_SYS")
* @ingroup lwip
* Use this mode if you do not run an OS on your system. \#define NO_SYS to 1.
* Feed incoming packets to netif->input(pbuf, netif) function from mainloop,
* *not* *from* *interrupt* *context*. You can allocate a @ref pbuf in interrupt
* context and put them into a queue which is processed from mainloop.\n
* Call sys_check_timeouts() periodically in the mainloop.\n
* Porting: implement all functions in @ref sys_time, @ref sys_prot and
* @ref compiler_abstraction.\n
* You can only use @ref callbackstyle_api in this mode.\n
* Sample code:\n
* @include NO_SYS_SampleCode.c
*/
/**
* @defgroup lwip_os OS mode (TCPIP thread)
* @ingroup lwip
* Use this mode if you run an OS on your system. It is recommended to
* use an RTOS that correctly handles priority inversion and
* to use @ref LWIP_TCPIP_CORE_LOCKING.\n
* Porting: implement all functions in @ref sys_layer.\n
* You can use @ref callbackstyle_api together with @ref tcpip_callback,
* and all @ref sequential_api.
*/
/**
* @page sys_init System initalization
A truly complete and generic sequence for initializing the lwIP stack
cannot be given because it depends on additional initializations for
your runtime environment (e.g. timers).
We can give you some idea on how to proceed when using the raw API.
We assume a configuration using a single Ethernet netif and the
UDP and TCP transport layers, IPv4 and the DHCP client.
Call these functions in the order of appearance:
- lwip_init(): Initialize the lwIP stack and all of its subsystems.
- netif_add(struct netif *netif, ...):
Adds your network interface to the netif_list. Allocate a struct
netif and pass a pointer to this structure as the first argument.
Give pointers to cleared ip_addr structures when using DHCP,
or fill them with sane numbers otherwise. The state pointer may be NULL.
The init function pointer must point to a initialization function for
your Ethernet netif interface. The following code illustrates its use.
@code{.c}
err_t netif_if_init(struct netif *netif)
{
u8_t i;
for (i = 0; i < ETHARP_HWADDR_LEN; i++) {
netif->hwaddr[i] = some_eth_addr[i];
}
init_my_eth_device();
return ERR_OK;
}
@endcode
For Ethernet drivers, the input function pointer must point to the lwIP
function ethernet_input() declared in "netif/etharp.h". Other drivers
must use ip_input() declared in "lwip/ip.h".
- netif_set_default(struct netif *netif)
Registers the default network interface.
- netif_set_link_up(struct netif *netif)
This is the hardware link state; e.g. whether cable is plugged for wired
Ethernet interface. This function must be called even if you don't know
the current state. Having link up and link down events is optional but
DHCP and IPv6 discover benefit well from those events.
- netif_set_up(struct netif *netif)
This is the administrative (= software) state of the netif, when the
netif is fully configured this function must be called.
- dhcp_start(struct netif *netif)
Creates a new DHCP client for this interface on the first call.
You can peek in the netif->dhcp struct for the actual DHCP status.
- sys_check_timeouts()
When the system is running, you have to periodically call
sys_check_timeouts() which will handle all timers for all protocols in
the stack; add this to your main loop or equivalent.
*/
/**
* @page multithreading Multithreading
* lwIP started targeting single-threaded environments. When adding multi-
* threading support, instead of making the core thread-safe, another
* approach was chosen: there is one main thread running the lwIP core
* (also known as the "tcpip_thread"). When running in a multithreaded
* environment, raw API functions MUST only be called from the core thread
* since raw API functions are not protected from concurrent access (aside
* from pbuf- and memory management functions). Application threads using
* the sequential- or socket API communicate with this main thread through
* message passing.
*
* As such, the list of functions that may be called from
* other threads or an ISR is very limited! Only functions
* from these API header files are thread-safe:
* - api.h
* - netbuf.h
* - netdb.h
* - netifapi.h
* - pppapi.h
* - sockets.h
* - sys.h
*
* Additionaly, memory (de-)allocation functions may be
* called from multiple threads (not ISR!) with NO_SYS=0
* since they are protected by @ref SYS_LIGHTWEIGHT_PROT and/or
* semaphores.
*
* Netconn or Socket API functions are thread safe against the
* core thread but they are not reentrant at the control block
* granularity level. That is, a UDP or TCP control block must
* not be shared among multiple threads without proper locking.
*
* If @ref SYS_LIGHTWEIGHT_PROT is set to 1 and
* @ref LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT is set to 1,
* pbuf_free() may also be called from another thread or
* an ISR (since only then, mem_free - for PBUF_RAM - may
* be called from an ISR: otherwise, the HEAP is only
* protected by semaphores).
*
* How to get threading done right
* -------------------------------
*
* It is strongly recommended to implement the LWIP_ASSERT_CORE_LOCKED()
* macro in an application that uses multithreading. lwIP code has
* several places where a check for a correct thread context is
* implemented which greatly helps the user to get threading done right.
* See the example sys_arch.c files in unix and Win32 port
* in the contrib repository.
*
* In short: Copy the functions sys_mark_tcpip_thread() and
* sys_check_core_locking() to your port and modify them to work with your OS.
* Then let @ref LWIP_ASSERT_CORE_LOCKED() and @ref LWIP_MARK_TCPIP_THREAD()
* point to these functions.
*
* If you use @ref LWIP_TCPIP_CORE_LOCKING, you also need to copy and adapt
* the functions sys_lock_tcpip_core() and sys_unlock_tcpip_core().
* Let @ref LOCK_TCPIP_CORE() and @ref UNLOCK_TCPIP_CORE() point
* to these functions.
*/
/**
* @page optimization Optimization hints
The first thing you want to optimize is the lwip_standard_checksum()
routine from src/core/inet.c. You can override this standard
function with the \#define LWIP_CHKSUM your_checksum_routine().
There are C examples given in inet.c or you might want to
craft an assembly function for this. RFC1071 is a good
introduction to this subject.
Other significant improvements can be made by supplying
assembly or inline replacements for htons() and htonl()
if you're using a little-endian architecture.
\#define lwip_htons(x) your_htons()
\#define lwip_htonl(x) your_htonl()
If you \#define them to htons() and htonl(), you should
\#define LWIP_DONT_PROVIDE_BYTEORDER_FUNCTIONS to prevent lwIP from
defining htonx / ntohx compatibility macros.
Check your network interface driver if it reads at
a higher speed than the maximum wire-speed. If the
hardware isn't serviced frequently and fast enough
buffer overflows are likely to occur.
E.g. when using the cs8900 driver, call cs8900if_service(ethif)
as frequently as possible. When using an RTOS let the cs8900 interrupt
wake a high priority task that services your driver using a binary
semaphore or event flag. Some drivers might allow additional tuning
to match your application and network.
For a production release it is recommended to set LWIP_STATS to 0.
Note that speed performance isn't influenced much by simply setting
high values to the memory options.
*/

View File

@ -0,0 +1,200 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/core/altcp.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">altcp.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp_8h.html">lwip/altcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__priv_8h.html">lwip/priv/altcp_priv.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__tcp_8h.html">lwip/altcp_tcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="tcp_8h.html">lwip/tcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="mem_8h.html">lwip/mem.h</a>&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a6a99f8757c18fbc9b9f30925afbcf4c2"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp_8c.html#a6a99f8757c18fbc9b9f30925afbcf4c2">altcp_alloc</a> (void)</td></tr>
<tr class="separator:a6a99f8757c18fbc9b9f30925afbcf4c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd7f6b6602e89cff51f8a8ea0315321d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp_8c.html#afd7f6b6602e89cff51f8a8ea0315321d">altcp_free</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:afd7f6b6602e89cff51f8a8ea0315321d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa51a47bcb334b188c82a1b99db49f1f1"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gaa51a47bcb334b188c82a1b99db49f1f1">altcp_new_ip6</a> (<a class="el" href="group__altcp.html#ga9ddf490e24b1472a96ab2b4cedd171f8">altcp_allocator_t</a> *allocator)</td></tr>
<tr class="separator:gaa51a47bcb334b188c82a1b99db49f1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga86843287b0ad0099c067817cfb7aa336"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga86843287b0ad0099c067817cfb7aa336">altcp_new</a> (<a class="el" href="group__altcp.html#ga9ddf490e24b1472a96ab2b4cedd171f8">altcp_allocator_t</a> *allocator)</td></tr>
<tr class="separator:ga86843287b0ad0099c067817cfb7aa336"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab631f6f92d7f6c58d9db27b7b415bc21"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gab631f6f92d7f6c58d9db27b7b415bc21">altcp_new_ip_type</a> (<a class="el" href="group__altcp.html#ga9ddf490e24b1472a96ab2b4cedd171f8">altcp_allocator_t</a> *allocator, u8_t ip_type)</td></tr>
<tr class="separator:gab631f6f92d7f6c58d9db27b7b415bc21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga197a33af038556a04d8f27c7033d771f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga197a33af038556a04d8f27c7033d771f">altcp_arg</a> (struct altcp_pcb *conn, void *arg)</td></tr>
<tr class="separator:ga197a33af038556a04d8f27c7033d771f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7c4cd0b1179a53b1a223936ba2270bf9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga7c4cd0b1179a53b1a223936ba2270bf9">altcp_accept</a> (struct altcp_pcb *conn, altcp_accept_fn <a class="el" href="group__socket.html#gade2b17671b5a4b18e941fbf7e1060310">accept</a>)</td></tr>
<tr class="separator:ga7c4cd0b1179a53b1a223936ba2270bf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f89221f9d65036d890b1e5bd9192a71"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga7f89221f9d65036d890b1e5bd9192a71">altcp_recv</a> (struct altcp_pcb *conn, altcp_recv_fn <a class="el" href="group__socket.html#gadd7ae45df7c005619eb1126542231e9b">recv</a>)</td></tr>
<tr class="separator:ga7f89221f9d65036d890b1e5bd9192a71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab2b228c77c827fb14bfc513171c79f47"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gab2b228c77c827fb14bfc513171c79f47">altcp_sent</a> (struct altcp_pcb *conn, altcp_sent_fn sent)</td></tr>
<tr class="separator:gab2b228c77c827fb14bfc513171c79f47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga269beeaf7d8264b6ff02333bcc7c7ab0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga269beeaf7d8264b6ff02333bcc7c7ab0">altcp_poll</a> (struct altcp_pcb *conn, altcp_poll_fn <a class="el" href="group__socket.html#ga80ae38841b0e64e60618cd8bf857f617">poll</a>, u8_t interval)</td></tr>
<tr class="separator:ga269beeaf7d8264b6ff02333bcc7c7ab0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadc76a1f3b2448559dc87da1b33291644"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gadc76a1f3b2448559dc87da1b33291644">altcp_err</a> (struct altcp_pcb *conn, altcp_err_fn err)</td></tr>
<tr class="separator:gadc76a1f3b2448559dc87da1b33291644"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac086951cbfedaed0c36c5fb26b44ef83"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gac086951cbfedaed0c36c5fb26b44ef83">altcp_recved</a> (struct altcp_pcb *conn, u16_t len)</td></tr>
<tr class="separator:gac086951cbfedaed0c36c5fb26b44ef83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga485b248680f73b9876d8674029c5157c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga485b248680f73b9876d8674029c5157c">altcp_bind</a> (struct altcp_pcb *conn, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *ipaddr, u16_t port)</td></tr>
<tr class="separator:ga485b248680f73b9876d8674029c5157c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafaf1d533e4e89dc249a3f931afa93492"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gafaf1d533e4e89dc249a3f931afa93492">altcp_connect</a> (struct altcp_pcb *conn, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *ipaddr, u16_t port, altcp_connected_fn connected)</td></tr>
<tr class="separator:gafaf1d533e4e89dc249a3f931afa93492"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac69722b86b1198916f2527fb9f132c2b"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gac69722b86b1198916f2527fb9f132c2b">altcp_listen_with_backlog_and_err</a> (struct altcp_pcb *conn, u8_t backlog, <a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> *err)</td></tr>
<tr class="separator:gac69722b86b1198916f2527fb9f132c2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f6fab99fed448385a76b4a5100796ab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga7f6fab99fed448385a76b4a5100796ab">altcp_abort</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:ga7f6fab99fed448385a76b4a5100796ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4329798afdf3709c789a2ee060ee3993"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga4329798afdf3709c789a2ee060ee3993">altcp_close</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:ga4329798afdf3709c789a2ee060ee3993"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0c3172d0bfe452599e242ea2e4692319"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga0c3172d0bfe452599e242ea2e4692319">altcp_shutdown</a> (struct altcp_pcb *conn, int shut_rx, int shut_tx)</td></tr>
<tr class="separator:ga0c3172d0bfe452599e242ea2e4692319"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaad9a38396b127cfd778e253f20a97b8d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gaad9a38396b127cfd778e253f20a97b8d">altcp_write</a> (struct altcp_pcb *conn, const void *dataptr, u16_t len, u8_t apiflags)</td></tr>
<tr class="separator:gaad9a38396b127cfd778e253f20a97b8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5d2370d3b671377d7e2c98ce2dc3cfc6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga5d2370d3b671377d7e2c98ce2dc3cfc6">altcp_output</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:ga5d2370d3b671377d7e2c98ce2dc3cfc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae7cfc8bd8e45c517a706afd5857fda08"><td class="memItemLeft" align="right" valign="top">u16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gae7cfc8bd8e45c517a706afd5857fda08">altcp_mss</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:gae7cfc8bd8e45c517a706afd5857fda08"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab295cba0c1ded90fe044a8c37387a12c"><td class="memItemLeft" align="right" valign="top">u16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gab295cba0c1ded90fe044a8c37387a12c">altcp_sndbuf</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:gab295cba0c1ded90fe044a8c37387a12c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga516a1bfbf38fc47cfd47852715c505c5"><td class="memItemLeft" align="right" valign="top">u16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga516a1bfbf38fc47cfd47852715c505c5">altcp_sndqueuelen</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:ga516a1bfbf38fc47cfd47852715c505c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5040b0a4646bca718d3611ba7fa558c5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga5040b0a4646bca718d3611ba7fa558c5">altcp_setprio</a> (struct altcp_pcb *conn, u8_t prio)</td></tr>
<tr class="separator:ga5040b0a4646bca718d3611ba7fa558c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a6a99f8757c18fbc9b9f30925afbcf4c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a99f8757c18fbc9b9f30925afbcf4c2">&#9670;&nbsp;</a></span>altcp_alloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct altcp_pcb* altcp_alloc </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>For altcp layer implementations only: allocate a new struct altcp_pcb from the pool and zero the memory </p>
</div>
</div>
<a id="afd7f6b6602e89cff51f8a8ea0315321d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd7f6b6602e89cff51f8a8ea0315321d">&#9670;&nbsp;</a></span>altcp_free()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void altcp_free </td>
<td>(</td>
<td class="paramtype">struct altcp_pcb *&#160;</td>
<td class="paramname"><em>conn</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>For altcp layer implementations only: return a struct altcp_pcb to the pool </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_aebb8dcc11953d78e620bbef0b9e2183.html">core</a></li><li class="navelem"><a class="el" href="altcp_8c.html">altcp.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,27 @@
var altcp_8c =
[
[ "altcp_abort", "group__altcp.html#ga7f6fab99fed448385a76b4a5100796ab", null ],
[ "altcp_accept", "group__altcp.html#ga7c4cd0b1179a53b1a223936ba2270bf9", null ],
[ "altcp_alloc", "altcp_8c.html#a6a99f8757c18fbc9b9f30925afbcf4c2", null ],
[ "altcp_arg", "group__altcp.html#ga197a33af038556a04d8f27c7033d771f", null ],
[ "altcp_bind", "group__altcp.html#ga485b248680f73b9876d8674029c5157c", null ],
[ "altcp_close", "group__altcp.html#ga4329798afdf3709c789a2ee060ee3993", null ],
[ "altcp_connect", "group__altcp.html#gafaf1d533e4e89dc249a3f931afa93492", null ],
[ "altcp_err", "group__altcp.html#gadc76a1f3b2448559dc87da1b33291644", null ],
[ "altcp_free", "altcp_8c.html#afd7f6b6602e89cff51f8a8ea0315321d", null ],
[ "altcp_listen_with_backlog_and_err", "group__altcp.html#gac69722b86b1198916f2527fb9f132c2b", null ],
[ "altcp_mss", "group__altcp.html#gae7cfc8bd8e45c517a706afd5857fda08", null ],
[ "altcp_new", "group__altcp.html#ga86843287b0ad0099c067817cfb7aa336", null ],
[ "altcp_new_ip6", "group__altcp.html#gaa51a47bcb334b188c82a1b99db49f1f1", null ],
[ "altcp_new_ip_type", "group__altcp.html#gab631f6f92d7f6c58d9db27b7b415bc21", null ],
[ "altcp_output", "group__altcp.html#ga5d2370d3b671377d7e2c98ce2dc3cfc6", null ],
[ "altcp_poll", "group__altcp.html#ga269beeaf7d8264b6ff02333bcc7c7ab0", null ],
[ "altcp_recv", "group__altcp.html#ga7f89221f9d65036d890b1e5bd9192a71", null ],
[ "altcp_recved", "group__altcp.html#gac086951cbfedaed0c36c5fb26b44ef83", null ],
[ "altcp_sent", "group__altcp.html#gab2b228c77c827fb14bfc513171c79f47", null ],
[ "altcp_setprio", "group__altcp.html#ga5040b0a4646bca718d3611ba7fa558c5", null ],
[ "altcp_shutdown", "group__altcp.html#ga0c3172d0bfe452599e242ea2e4692319", null ],
[ "altcp_sndbuf", "group__altcp.html#gab295cba0c1ded90fe044a8c37387a12c", null ],
[ "altcp_sndqueuelen", "group__altcp.html#ga516a1bfbf38fc47cfd47852715c505c5", null ],
[ "altcp_write", "group__altcp.html#gaad9a38396b127cfd778e253f20a97b8d", null ]
];

View File

@ -0,0 +1,176 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/altcp.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">altcp.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="tcpbase_8h.html">lwip/tcpbase.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="err_8h.html">lwip/err.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="pbuf_8h.html">lwip/pbuf.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ip__addr_8h.html">lwip/ip_addr.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structaltcp__allocator__s.html">altcp_allocator_s</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga96c22e15230b5216b3a95dc9e2ca42c8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga96c22e15230b5216b3a95dc9e2ca42c8">altcp_listen</a>(conn)&#160;&#160;&#160;<a class="el" href="group__altcp.html#gac69722b86b1198916f2527fb9f132c2b">altcp_listen_with_backlog_and_err</a>(conn, <a class="el" href="group__lwip__opts__tcp.html#ga93cce3f47e33df11248c908d1775bacf">TCP_DEFAULT_LISTEN_BACKLOG</a>, NULL)</td></tr>
<tr class="separator:ga96c22e15230b5216b3a95dc9e2ca42c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga9ddf490e24b1472a96ab2b4cedd171f8"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structaltcp__allocator__s.html">altcp_allocator_s</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga9ddf490e24b1472a96ab2b4cedd171f8">altcp_allocator_t</a></td></tr>
<tr class="separator:ga9ddf490e24b1472a96ab2b4cedd171f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga86843287b0ad0099c067817cfb7aa336"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga86843287b0ad0099c067817cfb7aa336">altcp_new</a> (<a class="el" href="group__altcp.html#ga9ddf490e24b1472a96ab2b4cedd171f8">altcp_allocator_t</a> *allocator)</td></tr>
<tr class="separator:ga86843287b0ad0099c067817cfb7aa336"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa51a47bcb334b188c82a1b99db49f1f1"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gaa51a47bcb334b188c82a1b99db49f1f1">altcp_new_ip6</a> (<a class="el" href="group__altcp.html#ga9ddf490e24b1472a96ab2b4cedd171f8">altcp_allocator_t</a> *allocator)</td></tr>
<tr class="separator:gaa51a47bcb334b188c82a1b99db49f1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab631f6f92d7f6c58d9db27b7b415bc21"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gab631f6f92d7f6c58d9db27b7b415bc21">altcp_new_ip_type</a> (<a class="el" href="group__altcp.html#ga9ddf490e24b1472a96ab2b4cedd171f8">altcp_allocator_t</a> *allocator, u8_t ip_type)</td></tr>
<tr class="separator:gab631f6f92d7f6c58d9db27b7b415bc21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga197a33af038556a04d8f27c7033d771f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga197a33af038556a04d8f27c7033d771f">altcp_arg</a> (struct altcp_pcb *conn, void *arg)</td></tr>
<tr class="separator:ga197a33af038556a04d8f27c7033d771f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7c4cd0b1179a53b1a223936ba2270bf9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga7c4cd0b1179a53b1a223936ba2270bf9">altcp_accept</a> (struct altcp_pcb *conn, altcp_accept_fn <a class="el" href="group__socket.html#gade2b17671b5a4b18e941fbf7e1060310">accept</a>)</td></tr>
<tr class="separator:ga7c4cd0b1179a53b1a223936ba2270bf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f89221f9d65036d890b1e5bd9192a71"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga7f89221f9d65036d890b1e5bd9192a71">altcp_recv</a> (struct altcp_pcb *conn, altcp_recv_fn <a class="el" href="group__socket.html#gadd7ae45df7c005619eb1126542231e9b">recv</a>)</td></tr>
<tr class="separator:ga7f89221f9d65036d890b1e5bd9192a71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab2b228c77c827fb14bfc513171c79f47"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gab2b228c77c827fb14bfc513171c79f47">altcp_sent</a> (struct altcp_pcb *conn, altcp_sent_fn sent)</td></tr>
<tr class="separator:gab2b228c77c827fb14bfc513171c79f47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga269beeaf7d8264b6ff02333bcc7c7ab0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga269beeaf7d8264b6ff02333bcc7c7ab0">altcp_poll</a> (struct altcp_pcb *conn, altcp_poll_fn <a class="el" href="group__socket.html#ga80ae38841b0e64e60618cd8bf857f617">poll</a>, u8_t interval)</td></tr>
<tr class="separator:ga269beeaf7d8264b6ff02333bcc7c7ab0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadc76a1f3b2448559dc87da1b33291644"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gadc76a1f3b2448559dc87da1b33291644">altcp_err</a> (struct altcp_pcb *conn, altcp_err_fn err)</td></tr>
<tr class="separator:gadc76a1f3b2448559dc87da1b33291644"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac086951cbfedaed0c36c5fb26b44ef83"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gac086951cbfedaed0c36c5fb26b44ef83">altcp_recved</a> (struct altcp_pcb *conn, u16_t len)</td></tr>
<tr class="separator:gac086951cbfedaed0c36c5fb26b44ef83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga485b248680f73b9876d8674029c5157c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga485b248680f73b9876d8674029c5157c">altcp_bind</a> (struct altcp_pcb *conn, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *ipaddr, u16_t port)</td></tr>
<tr class="separator:ga485b248680f73b9876d8674029c5157c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafaf1d533e4e89dc249a3f931afa93492"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gafaf1d533e4e89dc249a3f931afa93492">altcp_connect</a> (struct altcp_pcb *conn, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *ipaddr, u16_t port, altcp_connected_fn connected)</td></tr>
<tr class="separator:gafaf1d533e4e89dc249a3f931afa93492"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac69722b86b1198916f2527fb9f132c2b"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gac69722b86b1198916f2527fb9f132c2b">altcp_listen_with_backlog_and_err</a> (struct altcp_pcb *conn, u8_t backlog, <a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> *err)</td></tr>
<tr class="separator:gac69722b86b1198916f2527fb9f132c2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f6fab99fed448385a76b4a5100796ab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga7f6fab99fed448385a76b4a5100796ab">altcp_abort</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:ga7f6fab99fed448385a76b4a5100796ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4329798afdf3709c789a2ee060ee3993"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga4329798afdf3709c789a2ee060ee3993">altcp_close</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:ga4329798afdf3709c789a2ee060ee3993"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0c3172d0bfe452599e242ea2e4692319"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga0c3172d0bfe452599e242ea2e4692319">altcp_shutdown</a> (struct altcp_pcb *conn, int shut_rx, int shut_tx)</td></tr>
<tr class="separator:ga0c3172d0bfe452599e242ea2e4692319"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaad9a38396b127cfd778e253f20a97b8d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gaad9a38396b127cfd778e253f20a97b8d">altcp_write</a> (struct altcp_pcb *conn, const void *dataptr, u16_t len, u8_t apiflags)</td></tr>
<tr class="separator:gaad9a38396b127cfd778e253f20a97b8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5d2370d3b671377d7e2c98ce2dc3cfc6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga5d2370d3b671377d7e2c98ce2dc3cfc6">altcp_output</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:ga5d2370d3b671377d7e2c98ce2dc3cfc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae7cfc8bd8e45c517a706afd5857fda08"><td class="memItemLeft" align="right" valign="top">u16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gae7cfc8bd8e45c517a706afd5857fda08">altcp_mss</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:gae7cfc8bd8e45c517a706afd5857fda08"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab295cba0c1ded90fe044a8c37387a12c"><td class="memItemLeft" align="right" valign="top">u16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#gab295cba0c1ded90fe044a8c37387a12c">altcp_sndbuf</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:gab295cba0c1ded90fe044a8c37387a12c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga516a1bfbf38fc47cfd47852715c505c5"><td class="memItemLeft" align="right" valign="top">u16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga516a1bfbf38fc47cfd47852715c505c5">altcp_sndqueuelen</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:ga516a1bfbf38fc47cfd47852715c505c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5040b0a4646bca718d3611ba7fa558c5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp.html#ga5040b0a4646bca718d3611ba7fa558c5">altcp_setprio</a> (struct altcp_pcb *conn, u8_t prio)</td></tr>
<tr class="separator:ga5040b0a4646bca718d3611ba7fa558c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Application layered TCP connection API (to be used from TCPIP thread)<br />
This file contains the generic API. For more details see <a class="el" href="group__altcp__api.html">Application layered TCP Introduction</a>. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="altcp_8h.html">altcp.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,27 @@
var altcp_8h =
[
[ "altcp_listen", "group__altcp.html#ga96c22e15230b5216b3a95dc9e2ca42c8", null ],
[ "altcp_allocator_t", "group__altcp.html#ga9ddf490e24b1472a96ab2b4cedd171f8", null ],
[ "altcp_abort", "group__altcp.html#ga7f6fab99fed448385a76b4a5100796ab", null ],
[ "altcp_accept", "group__altcp.html#ga7c4cd0b1179a53b1a223936ba2270bf9", null ],
[ "altcp_arg", "group__altcp.html#ga197a33af038556a04d8f27c7033d771f", null ],
[ "altcp_bind", "group__altcp.html#ga485b248680f73b9876d8674029c5157c", null ],
[ "altcp_close", "group__altcp.html#ga4329798afdf3709c789a2ee060ee3993", null ],
[ "altcp_connect", "group__altcp.html#gafaf1d533e4e89dc249a3f931afa93492", null ],
[ "altcp_err", "group__altcp.html#gadc76a1f3b2448559dc87da1b33291644", null ],
[ "altcp_listen_with_backlog_and_err", "group__altcp.html#gac69722b86b1198916f2527fb9f132c2b", null ],
[ "altcp_mss", "group__altcp.html#gae7cfc8bd8e45c517a706afd5857fda08", null ],
[ "altcp_new", "group__altcp.html#ga86843287b0ad0099c067817cfb7aa336", null ],
[ "altcp_new_ip6", "group__altcp.html#gaa51a47bcb334b188c82a1b99db49f1f1", null ],
[ "altcp_new_ip_type", "group__altcp.html#gab631f6f92d7f6c58d9db27b7b415bc21", null ],
[ "altcp_output", "group__altcp.html#ga5d2370d3b671377d7e2c98ce2dc3cfc6", null ],
[ "altcp_poll", "group__altcp.html#ga269beeaf7d8264b6ff02333bcc7c7ab0", null ],
[ "altcp_recv", "group__altcp.html#ga7f89221f9d65036d890b1e5bd9192a71", null ],
[ "altcp_recved", "group__altcp.html#gac086951cbfedaed0c36c5fb26b44ef83", null ],
[ "altcp_sent", "group__altcp.html#gab2b228c77c827fb14bfc513171c79f47", null ],
[ "altcp_setprio", "group__altcp.html#ga5040b0a4646bca718d3611ba7fa558c5", null ],
[ "altcp_shutdown", "group__altcp.html#ga0c3172d0bfe452599e242ea2e4692319", null ],
[ "altcp_sndbuf", "group__altcp.html#gab295cba0c1ded90fe044a8c37387a12c", null ],
[ "altcp_sndqueuelen", "group__altcp.html#ga516a1bfbf38fc47cfd47852715c505c5", null ],
[ "altcp_write", "group__altcp.html#gaad9a38396b127cfd778e253f20a97b8d", null ]
];

View File

@ -0,0 +1,121 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/core/altcp_alloc.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp__alloc_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">altcp_alloc.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp_8h.html">lwip/altcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__tcp_8h.html">lwip/altcp_tcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__tls_8h.html">lwip/altcp_tls.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__priv_8h.html">lwip/priv/altcp_priv.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="mem_8h.html">lwip/mem.h</a>&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga028316a8257cf8dcace9cd063de79c0a"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp__tls.html#ga028316a8257cf8dcace9cd063de79c0a">altcp_tls_new</a> (struct altcp_tls_config *config, u8_t ip_type)</td></tr>
<tr class="separator:ga028316a8257cf8dcace9cd063de79c0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga09e6ca8f144ee94ef21d7e5760aa4391"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp__tls.html#ga09e6ca8f144ee94ef21d7e5760aa4391">altcp_tls_alloc</a> (void *arg, u8_t ip_type)</td></tr>
<tr class="separator:ga09e6ca8f144ee94ef21d7e5760aa4391"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Application layered TCP connection API (to be used from TCPIP thread)<br />
This interface mimics the tcp callback API to the application while preventing direct linking (much like virtual functions). This way, an application can make use of other application layer protocols on top of TCP without knowing the details (e.g. TLS, proxy connection).</p>
<p>This file contains allocation implementation that combine several layers. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_aebb8dcc11953d78e620bbef0b9e2183.html">core</a></li><li class="navelem"><a class="el" href="altcp__alloc_8c.html">altcp_alloc.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,5 @@
var altcp__alloc_8c =
[
[ "altcp_tls_alloc", "group__altcp__tls.html#ga09e6ca8f144ee94ef21d7e5760aa4391", null ],
[ "altcp_tls_new", "group__altcp__tls.html#ga028316a8257cf8dcace9cd063de79c0a", null ]
];

View File

@ -0,0 +1,155 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/priv/altcp_priv.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp__priv_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">altcp_priv.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp_8h.html">lwip/altcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ip__addr_8h.html">lwip/ip_addr.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a6a99f8757c18fbc9b9f30925afbcf4c2"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__priv_8h.html#a6a99f8757c18fbc9b9f30925afbcf4c2">altcp_alloc</a> (void)</td></tr>
<tr class="separator:a6a99f8757c18fbc9b9f30925afbcf4c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd7f6b6602e89cff51f8a8ea0315321d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__priv_8h.html#afd7f6b6602e89cff51f8a8ea0315321d">altcp_free</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:afd7f6b6602e89cff51f8a8ea0315321d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Application layered TCP connection API (to be used from TCPIP thread)<br />
This interface mimics the tcp callback API to the application while preventing direct linking (much like virtual functions). This way, an application can make use of other application layer protocols on top of TCP without knowing the details (e.g. TLS, proxy connection). </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a6a99f8757c18fbc9b9f30925afbcf4c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a99f8757c18fbc9b9f30925afbcf4c2">&#9670;&nbsp;</a></span>altcp_alloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct altcp_pcb* altcp_alloc </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>For altcp layer implementations only: allocate a new struct altcp_pcb from the pool and zero the memory </p>
</div>
</div>
<a id="afd7f6b6602e89cff51f8a8ea0315321d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd7f6b6602e89cff51f8a8ea0315321d">&#9670;&nbsp;</a></span>altcp_free()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void altcp_free </td>
<td>(</td>
<td class="paramtype">struct altcp_pcb *&#160;</td>
<td class="paramname"><em>conn</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>For altcp layer implementations only: return a struct altcp_pcb to the pool </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="dir_460c501b2432fc107adcb38111835e48.html">priv</a></li><li class="navelem"><a class="el" href="altcp__priv_8h.html">altcp_priv.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,5 @@
var altcp__priv_8h =
[
[ "altcp_alloc", "altcp__priv_8h.html#a6a99f8757c18fbc9b9f30925afbcf4c2", null ],
[ "altcp_free", "altcp__priv_8h.html#afd7f6b6602e89cff51f8a8ea0315321d", null ]
];

View File

@ -0,0 +1,296 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/apps/http/altcp_proxyconnect.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp__proxyconnect_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">altcp_proxyconnect.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="altcp__proxyconnect_8h.html">lwip/apps/altcp_proxyconnect.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp_8h.html">lwip/altcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__priv_8h.html">lwip/priv/altcp_priv.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__tcp_8h.html">lwip/altcp_tcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__tls_8h.html">lwip/altcp_tls.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="mem_8h.html">lwip/mem.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="init_8h.html">lwip/init.h</a>&quot;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a344227f22aa1b58f7ed737a2d4f4636f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__proxyconnect_8c.html#a344227f22aa1b58f7ed737a2d4f4636f">ALTCP_PROXYCONNECT_CLIENT_AGENT</a>&#160;&#160;&#160;&quot;lwIP/&quot; LWIP_VERSION_STRING &quot; (http://savannah.nongnu.org/projects/lwip)&quot;</td></tr>
<tr class="separator:a344227f22aa1b58f7ed737a2d4f4636f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ae774782064a92d0f58ce07b57a5360d1"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__proxyconnect_8c.html#ae774782064a92d0f58ce07b57a5360d1">altcp_proxyconnect_new</a> (struct altcp_proxyconnect_config *config, struct altcp_pcb *inner_pcb)</td></tr>
<tr class="separator:ae774782064a92d0f58ce07b57a5360d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24e122d2bc2c0b9f86074c1e8d5ccfe4"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__proxyconnect_8c.html#a24e122d2bc2c0b9f86074c1e8d5ccfe4">altcp_proxyconnect_new_tcp</a> (struct altcp_proxyconnect_config *config, u8_t ip_type)</td></tr>
<tr class="separator:a24e122d2bc2c0b9f86074c1e8d5ccfe4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d3af45390467ceeaa064b7e28dd43a9"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__proxyconnect_8c.html#a3d3af45390467ceeaa064b7e28dd43a9">altcp_proxyconnect_alloc</a> (void *arg, u8_t ip_type)</td></tr>
<tr class="separator:a3d3af45390467ceeaa064b7e28dd43a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ff49bcd035847a8915f18deef4172a9"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__proxyconnect_8c.html#a5ff49bcd035847a8915f18deef4172a9">altcp_proxyconnect_tls_alloc</a> (void *arg, u8_t ip_type)</td></tr>
<tr class="separator:a5ff49bcd035847a8915f18deef4172a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Application layered TCP connection API that executes a proxy-connect.</p>
<p>This file provides a starting layer that executes a proxy-connect e.g. to set up TLS connections through a http proxy. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a344227f22aa1b58f7ed737a2d4f4636f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a344227f22aa1b58f7ed737a2d4f4636f">&#9670;&nbsp;</a></span>ALTCP_PROXYCONNECT_CLIENT_AGENT</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define ALTCP_PROXYCONNECT_CLIENT_AGENT&#160;&#160;&#160;&quot;lwIP/&quot; LWIP_VERSION_STRING &quot; (http://savannah.nongnu.org/projects/lwip)&quot;</td>
</tr>
</table>
</div><div class="memdoc">
<p>This string is passed in the HTTP header as "User-Agent: " </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a3d3af45390467ceeaa064b7e28dd43a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d3af45390467ceeaa064b7e28dd43a9">&#9670;&nbsp;</a></span>altcp_proxyconnect_alloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct altcp_pcb* altcp_proxyconnect_alloc </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>arg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>ip_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Allocator function to allocate a proxy connect altcp pcb connecting directly via tcp to the proxy.</p>
<p>The returned pcb is a chain: altcp_proxyconnect - altcp_tcp - tcp pcb</p>
<p>This function is meant for use with <a class="el" href="group__altcp.html#ga86843287b0ad0099c067817cfb7aa336">altcp_new</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arg</td><td>struct altcp_proxyconnect_config that contains the proxy settings </td></tr>
<tr><td class="paramname">ip_type</td><td>IP type of the connection (<a class="el" href="group__ipaddr.html#gaf2142f0dfdcc938e2db16aa745ed585c">lwip_ip_addr_type</a>) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae774782064a92d0f58ce07b57a5360d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae774782064a92d0f58ce07b57a5360d1">&#9670;&nbsp;</a></span>altcp_proxyconnect_new()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct altcp_pcb* altcp_proxyconnect_new </td>
<td>(</td>
<td class="paramtype">struct altcp_proxyconnect_config *&#160;</td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct altcp_pcb *&#160;</td>
<td class="paramname"><em>inner_pcb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Allocate a new altcp layer connecting through a proxy. This function gets the inner pcb passed.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>struct altcp_proxyconnect_config that contains the proxy settings </td></tr>
<tr><td class="paramname">inner_pcb</td><td>pcb that makes the connection to the proxy (i.e. tcp pcb) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a24e122d2bc2c0b9f86074c1e8d5ccfe4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24e122d2bc2c0b9f86074c1e8d5ccfe4">&#9670;&nbsp;</a></span>altcp_proxyconnect_new_tcp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct altcp_pcb* altcp_proxyconnect_new_tcp </td>
<td>(</td>
<td class="paramtype">struct altcp_proxyconnect_config *&#160;</td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>ip_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Allocate a new altcp layer connecting through a proxy. This function allocates the inner pcb as tcp pcb, resulting in a direct tcp connection to the proxy.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>struct altcp_proxyconnect_config that contains the proxy settings </td></tr>
<tr><td class="paramname">ip_type</td><td>IP type of the connection (<a class="el" href="group__ipaddr.html#gaf2142f0dfdcc938e2db16aa745ed585c">lwip_ip_addr_type</a>) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a5ff49bcd035847a8915f18deef4172a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ff49bcd035847a8915f18deef4172a9">&#9670;&nbsp;</a></span>altcp_proxyconnect_tls_alloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct altcp_pcb* altcp_proxyconnect_tls_alloc </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>arg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>ip_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Allocator function to allocate a TLS connection through a proxy.</p>
<p>The returned pcb is a chain: altcp_tls - altcp_proxyconnect - altcp_tcp - tcp pcb</p>
<p>This function is meant for use with <a class="el" href="group__altcp.html#ga86843287b0ad0099c067817cfb7aa336">altcp_new</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arg</td><td>struct altcp_proxyconnect_tls_config that contains the proxy settings and tls settings </td></tr>
<tr><td class="paramname">ip_type</td><td>IP type of the connection (<a class="el" href="group__ipaddr.html#gaf2142f0dfdcc938e2db16aa745ed585c">lwip_ip_addr_type</a>) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li><li class="navelem"><a class="el" href="dir_34adf996f92d0eef72c45a7167a966e6.html">http</a></li><li class="navelem"><a class="el" href="altcp__proxyconnect_8c.html">altcp_proxyconnect.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,8 @@
var altcp__proxyconnect_8c =
[
[ "ALTCP_PROXYCONNECT_CLIENT_AGENT", "altcp__proxyconnect_8c.html#a344227f22aa1b58f7ed737a2d4f4636f", null ],
[ "altcp_proxyconnect_alloc", "altcp__proxyconnect_8c.html#a3d3af45390467ceeaa064b7e28dd43a9", null ],
[ "altcp_proxyconnect_new", "altcp__proxyconnect_8c.html#ae774782064a92d0f58ce07b57a5360d1", null ],
[ "altcp_proxyconnect_new_tcp", "altcp__proxyconnect_8c.html#a24e122d2bc2c0b9f86074c1e8d5ccfe4", null ],
[ "altcp_proxyconnect_tls_alloc", "altcp__proxyconnect_8c.html#a5ff49bcd035847a8915f18deef4172a9", null ]
];

View File

@ -0,0 +1,268 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/apps/altcp_proxyconnect.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp__proxyconnect_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">altcp_proxyconnect.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ip__addr_8h.html">lwip/ip_addr.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ae774782064a92d0f58ce07b57a5360d1"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__proxyconnect_8h.html#ae774782064a92d0f58ce07b57a5360d1">altcp_proxyconnect_new</a> (struct altcp_proxyconnect_config *config, struct altcp_pcb *inner_pcb)</td></tr>
<tr class="separator:ae774782064a92d0f58ce07b57a5360d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24e122d2bc2c0b9f86074c1e8d5ccfe4"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__proxyconnect_8h.html#a24e122d2bc2c0b9f86074c1e8d5ccfe4">altcp_proxyconnect_new_tcp</a> (struct altcp_proxyconnect_config *config, u8_t ip_type)</td></tr>
<tr class="separator:a24e122d2bc2c0b9f86074c1e8d5ccfe4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d3af45390467ceeaa064b7e28dd43a9"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__proxyconnect_8h.html#a3d3af45390467ceeaa064b7e28dd43a9">altcp_proxyconnect_alloc</a> (void *arg, u8_t ip_type)</td></tr>
<tr class="separator:a3d3af45390467ceeaa064b7e28dd43a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ff49bcd035847a8915f18deef4172a9"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__proxyconnect_8h.html#a5ff49bcd035847a8915f18deef4172a9">altcp_proxyconnect_tls_alloc</a> (void *arg, u8_t ip_type)</td></tr>
<tr class="separator:a5ff49bcd035847a8915f18deef4172a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Application layered TCP connection API that executes a proxy-connect.</p>
<p>This file provides a starting layer that executes a proxy-connect e.g. to set up TLS connections through a http proxy. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a3d3af45390467ceeaa064b7e28dd43a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d3af45390467ceeaa064b7e28dd43a9">&#9670;&nbsp;</a></span>altcp_proxyconnect_alloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct altcp_pcb* altcp_proxyconnect_alloc </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>arg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>ip_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Allocator function to allocate a proxy connect altcp pcb connecting directly via tcp to the proxy.</p>
<p>The returned pcb is a chain: altcp_proxyconnect - altcp_tcp - tcp pcb</p>
<p>This function is meant for use with <a class="el" href="group__altcp.html#ga86843287b0ad0099c067817cfb7aa336">altcp_new</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arg</td><td>struct altcp_proxyconnect_config that contains the proxy settings </td></tr>
<tr><td class="paramname">ip_type</td><td>IP type of the connection (<a class="el" href="group__ipaddr.html#gaf2142f0dfdcc938e2db16aa745ed585c">lwip_ip_addr_type</a>) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae774782064a92d0f58ce07b57a5360d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae774782064a92d0f58ce07b57a5360d1">&#9670;&nbsp;</a></span>altcp_proxyconnect_new()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct altcp_pcb* altcp_proxyconnect_new </td>
<td>(</td>
<td class="paramtype">struct altcp_proxyconnect_config *&#160;</td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct altcp_pcb *&#160;</td>
<td class="paramname"><em>inner_pcb</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Allocate a new altcp layer connecting through a proxy. This function gets the inner pcb passed.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>struct altcp_proxyconnect_config that contains the proxy settings </td></tr>
<tr><td class="paramname">inner_pcb</td><td>pcb that makes the connection to the proxy (i.e. tcp pcb) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a24e122d2bc2c0b9f86074c1e8d5ccfe4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24e122d2bc2c0b9f86074c1e8d5ccfe4">&#9670;&nbsp;</a></span>altcp_proxyconnect_new_tcp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct altcp_pcb* altcp_proxyconnect_new_tcp </td>
<td>(</td>
<td class="paramtype">struct altcp_proxyconnect_config *&#160;</td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>ip_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Allocate a new altcp layer connecting through a proxy. This function allocates the inner pcb as tcp pcb, resulting in a direct tcp connection to the proxy.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>struct altcp_proxyconnect_config that contains the proxy settings </td></tr>
<tr><td class="paramname">ip_type</td><td>IP type of the connection (<a class="el" href="group__ipaddr.html#gaf2142f0dfdcc938e2db16aa745ed585c">lwip_ip_addr_type</a>) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a5ff49bcd035847a8915f18deef4172a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ff49bcd035847a8915f18deef4172a9">&#9670;&nbsp;</a></span>altcp_proxyconnect_tls_alloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct altcp_pcb* altcp_proxyconnect_tls_alloc </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>arg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>ip_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Allocator function to allocate a TLS connection through a proxy.</p>
<p>The returned pcb is a chain: altcp_tls - altcp_proxyconnect - altcp_tcp - tcp pcb</p>
<p>This function is meant for use with <a class="el" href="group__altcp.html#ga86843287b0ad0099c067817cfb7aa336">altcp_new</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arg</td><td>struct altcp_proxyconnect_tls_config that contains the proxy settings and tls settings </td></tr>
<tr><td class="paramname">ip_type</td><td>IP type of the connection (<a class="el" href="group__ipaddr.html#gaf2142f0dfdcc938e2db16aa745ed585c">lwip_ip_addr_type</a>) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="dir_f9284811ac594eafdc3134d5f8b945cb.html">apps</a></li><li class="navelem"><a class="el" href="altcp__proxyconnect_8h.html">altcp_proxyconnect.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,7 @@
var altcp__proxyconnect_8h =
[
[ "altcp_proxyconnect_alloc", "altcp__proxyconnect_8h.html#a3d3af45390467ceeaa064b7e28dd43a9", null ],
[ "altcp_proxyconnect_new", "altcp__proxyconnect_8h.html#ae774782064a92d0f58ce07b57a5360d1", null ],
[ "altcp_proxyconnect_new_tcp", "altcp__proxyconnect_8h.html#a24e122d2bc2c0b9f86074c1e8d5ccfe4", null ],
[ "altcp_proxyconnect_tls_alloc", "altcp__proxyconnect_8h.html#a5ff49bcd035847a8915f18deef4172a9", null ]
];

View File

@ -0,0 +1,150 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/core/altcp_tcp.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp__tcp_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">altcp_tcp.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp_8h.html">lwip/altcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__tcp_8h.html">lwip/altcp_tcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__priv_8h.html">lwip/priv/altcp_priv.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="tcp_8h.html">lwip/tcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="mem_8h.html">lwip/mem.h</a>&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a211215e43cb40bd204a20c34316b7caa"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__tcp_8c.html#a211215e43cb40bd204a20c34316b7caa">altcp_tcp_alloc</a> (void *arg, u8_t ip_type)</td></tr>
<tr class="separator:a211215e43cb40bd204a20c34316b7caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Application layered TCP connection API (to be used from TCPIP thread)<br />
This interface mimics the tcp callback API to the application while preventing direct linking (much like virtual functions). This way, an application can make use of other application layer protocols on top of TCP without knowing the details (e.g. TLS, proxy connection).</p>
<p>This file contains the base implementation calling into tcp. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a211215e43cb40bd204a20c34316b7caa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a211215e43cb40bd204a20c34316b7caa">&#9670;&nbsp;</a></span>altcp_tcp_alloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct altcp_pcb* altcp_tcp_alloc </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>arg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>ip_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>altcp_tcp allocator function fitting to <a class="el" href="group__altcp.html#ga9ddf490e24b1472a96ab2b4cedd171f8">altcp_allocator_t</a> / <a class="el" href="group__altcp.html#ga86843287b0ad0099c067817cfb7aa336">altcp_new</a>.</p>
<p>arg pointer is not used for TCP. </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_aebb8dcc11953d78e620bbef0b9e2183.html">core</a></li><li class="navelem"><a class="el" href="altcp__tcp_8c.html">altcp_tcp.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,4 @@
var altcp__tcp_8c =
[
[ "altcp_tcp_alloc", "altcp__tcp_8c.html#a211215e43cb40bd204a20c34316b7caa", null ]
];

View File

@ -0,0 +1,145 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/altcp_tcp.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp__tcp_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">altcp_tcp.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp_8h.html">lwip/altcp.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a211215e43cb40bd204a20c34316b7caa"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__tcp_8h.html#a211215e43cb40bd204a20c34316b7caa">altcp_tcp_alloc</a> (void *arg, u8_t ip_type)</td></tr>
<tr class="separator:a211215e43cb40bd204a20c34316b7caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Application layered TCP connection API (to be used from TCPIP thread)<br />
This interface mimics the tcp callback API to the application while preventing direct linking (much like virtual functions). This way, an application can make use of other application layer protocols on top of TCP without knowing the details (e.g. TLS, proxy connection).</p>
<p>This file contains the base implementation calling into tcp. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a211215e43cb40bd204a20c34316b7caa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a211215e43cb40bd204a20c34316b7caa">&#9670;&nbsp;</a></span>altcp_tcp_alloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct altcp_pcb* altcp_tcp_alloc </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>arg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>ip_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>altcp_tcp allocator function fitting to <a class="el" href="group__altcp.html#ga9ddf490e24b1472a96ab2b4cedd171f8">altcp_allocator_t</a> / <a class="el" href="group__altcp.html#ga86843287b0ad0099c067817cfb7aa336">altcp_new</a>.</p>
<p>arg pointer is not used for TCP. </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="altcp__tcp_8h.html">altcp_tcp.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,4 @@
var altcp__tcp_8h =
[
[ "altcp_tcp_alloc", "altcp__tcp_8h.html#a211215e43cb40bd204a20c34316b7caa", null ]
];

View File

@ -0,0 +1,126 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/altcp_tls.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp__tls_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">altcp_tls.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp_8h.html">lwip/altcp.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga700dc0320e93cea337673e7d4295e161"><td class="memItemLeft" align="right" valign="top">struct altcp_tls_config *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp__tls.html#ga700dc0320e93cea337673e7d4295e161">altcp_tls_create_config_server_privkey_cert</a> (const u8_t *privkey, size_t privkey_len, const u8_t *privkey_pass, size_t privkey_pass_len, const u8_t *cert, size_t cert_len)</td></tr>
<tr class="separator:ga700dc0320e93cea337673e7d4295e161"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2b249447e10c8599b6d723d403086c35"><td class="memItemLeft" align="right" valign="top">struct altcp_tls_config *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp__tls.html#ga2b249447e10c8599b6d723d403086c35">altcp_tls_create_config_client</a> (const u8_t *cert, size_t cert_len)</td></tr>
<tr class="separator:ga2b249447e10c8599b6d723d403086c35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7352a4600fee89e167541cf0776c01fb"><td class="memItemLeft" align="right" valign="top">struct altcp_tls_config *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp__tls.html#ga7352a4600fee89e167541cf0776c01fb">altcp_tls_create_config_client_2wayauth</a> (const u8_t *ca, size_t ca_len, const u8_t *privkey, size_t privkey_len, const u8_t *privkey_pass, size_t privkey_pass_len, const u8_t *cert, size_t cert_len)</td></tr>
<tr class="separator:ga7352a4600fee89e167541cf0776c01fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8fb8a92fa3f84170050ddab2888b9145"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp__tls.html#ga8fb8a92fa3f84170050ddab2888b9145">altcp_tls_free_config</a> (struct altcp_tls_config *conf)</td></tr>
<tr class="separator:ga8fb8a92fa3f84170050ddab2888b9145"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab874adb7f87984c0520bd032c2108c47"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp__tls.html#gab874adb7f87984c0520bd032c2108c47">altcp_tls_wrap</a> (struct altcp_tls_config *config, struct altcp_pcb *inner_pcb)</td></tr>
<tr class="separator:gab874adb7f87984c0520bd032c2108c47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga028316a8257cf8dcace9cd063de79c0a"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp__tls.html#ga028316a8257cf8dcace9cd063de79c0a">altcp_tls_new</a> (struct altcp_tls_config *config, u8_t ip_type)</td></tr>
<tr class="separator:ga028316a8257cf8dcace9cd063de79c0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga09e6ca8f144ee94ef21d7e5760aa4391"><td class="memItemLeft" align="right" valign="top">struct altcp_pcb *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp__tls.html#ga09e6ca8f144ee94ef21d7e5760aa4391">altcp_tls_alloc</a> (void *arg, u8_t ip_type)</td></tr>
<tr class="separator:ga09e6ca8f144ee94ef21d7e5760aa4391"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabc1741530d5089c3093889416430bc76"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__altcp__tls.html#gabc1741530d5089c3093889416430bc76">altcp_tls_context</a> (struct altcp_pcb *conn)</td></tr>
<tr class="separator:gabc1741530d5089c3093889416430bc76"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Application layered TCP/TLS connection API (to be used from TCPIP thread) </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="altcp__tls_8h.html">altcp_tls.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,11 @@
var altcp__tls_8h =
[
[ "altcp_tls_alloc", "group__altcp__tls.html#ga09e6ca8f144ee94ef21d7e5760aa4391", null ],
[ "altcp_tls_context", "group__altcp__tls.html#gabc1741530d5089c3093889416430bc76", null ],
[ "altcp_tls_create_config_client", "group__altcp__tls.html#ga2b249447e10c8599b6d723d403086c35", null ],
[ "altcp_tls_create_config_client_2wayauth", "group__altcp__tls.html#ga7352a4600fee89e167541cf0776c01fb", null ],
[ "altcp_tls_create_config_server_privkey_cert", "group__altcp__tls.html#ga700dc0320e93cea337673e7d4295e161", null ],
[ "altcp_tls_free_config", "group__altcp__tls.html#ga8fb8a92fa3f84170050ddab2888b9145", null ],
[ "altcp_tls_new", "group__altcp__tls.html#ga028316a8257cf8dcace9cd063de79c0a", null ],
[ "altcp_tls_wrap", "group__altcp__tls.html#gab874adb7f87984c0520bd032c2108c47", null ]
];

View File

@ -0,0 +1,105 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/apps/altcp_tls/altcp_tls_mbedtls.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp__tls__mbedtls_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">altcp_tls_mbedtls.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__tls__mbedtls__opts_8h.html">lwip/apps/altcp_tls_mbedtls_opts.h</a>&quot;</code><br />
</div><a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Application layered TCP/TLS connection API (to be used from TCPIP thread)</p>
<p>This file provides a TLS layer using mbedTLS </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li><li class="navelem"><a class="el" href="dir_1cb496c74bbaf54ecc99133e1c434e0c.html">altcp_tls</a></li><li class="navelem"><a class="el" href="altcp__tls__mbedtls_8c.html">altcp_tls_mbedtls.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,106 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/apps/altcp_tls/altcp_tls_mbedtls_mem.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp__tls__mbedtls__mem_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">altcp_tls_mbedtls_mem.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__tls__mbedtls__opts_8h.html">lwip/apps/altcp_tls_mbedtls_opts.h</a>&quot;</code><br />
</div><a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Application layered TCP connection API (to be used from TCPIP thread)</p>
<p>This file contains memory management functions for a TLS layer using mbedTLS.</p>
<p>ATTENTION: For production usage, you might want to override this file with your own implementation since this implementation simply uses the lwIP heap without caring for fragmentation or leaving heap for other parts of lwIP! </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li><li class="navelem"><a class="el" href="dir_1cb496c74bbaf54ecc99133e1c434e0c.html">altcp_tls</a></li><li class="navelem"><a class="el" href="altcp__tls__mbedtls__mem_8c.html">altcp_tls_mbedtls_mem.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,109 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/apps/altcp_tls/altcp_tls_mbedtls_mem.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp__tls__mbedtls__mem_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">altcp_tls_mbedtls_mem.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__tls__mbedtls__opts_8h.html">lwip/apps/altcp_tls_mbedtls_opts.h</a>&quot;</code><br />
</div><a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Application layered TCP/TLS connection API (to be used from TCPIP thread)</p>
<p>This file contains memory management function prototypes for a TLS layer using mbedTLS.</p>
<p>Memory management contains:</p><ul>
<li>allocating/freeing altcp_mbedtls_state_t</li>
<li>allocating/freeing memory used in the mbedTLS library </li>
</ul>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li><li class="navelem"><a class="el" href="dir_1cb496c74bbaf54ecc99133e1c434e0c.html">altcp_tls</a></li><li class="navelem"><a class="el" href="altcp__tls__mbedtls__mem_8h.html">altcp_tls_mbedtls_mem.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,162 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/apps/altcp_tls_mbedtls_opts.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp__tls__mbedtls__opts_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> </div>
<div class="headertitle">
<div class="title">altcp_tls_mbedtls_opts.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ac8dbfe10a4a9a64c1e2c62ea97e48639"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__tls__mbedtls__opts_8h.html#ac8dbfe10a4a9a64c1e2c62ea97e48639">LWIP_ALTCP_TLS_MBEDTLS</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:ac8dbfe10a4a9a64c1e2c62ea97e48639"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7727456eeb0b3311213936413d238989"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__tls__mbedtls__opts_8h.html#a7727456eeb0b3311213936413d238989">ALTCP_MBEDTLS_DEBUG</a>&#160;&#160;&#160;<a class="el" href="group__debugging__levels.html#gadab1cdc3f45939a3a5c9a3d7e04987e1">LWIP_DBG_OFF</a></td></tr>
<tr class="separator:a7727456eeb0b3311213936413d238989"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6acb28346f87b2310fc00ec1fccba2b6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__tls__mbedtls__opts_8h.html#a6acb28346f87b2310fc00ec1fccba2b6">ALTCP_MBEDTLS_SESSION_CACHE_TIMEOUT_SECONDS</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a6acb28346f87b2310fc00ec1fccba2b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Application layered TCP/TLS connection API (to be used from TCPIP thread)</p>
<p>This file contains options for an mbedtls port of the TLS layer. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a7727456eeb0b3311213936413d238989"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7727456eeb0b3311213936413d238989">&#9670;&nbsp;</a></span>ALTCP_MBEDTLS_DEBUG</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define ALTCP_MBEDTLS_DEBUG&#160;&#160;&#160;<a class="el" href="group__debugging__levels.html#gadab1cdc3f45939a3a5c9a3d7e04987e1">LWIP_DBG_OFF</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Configure debug level of this file </p>
</div>
</div>
<a id="a6acb28346f87b2310fc00ec1fccba2b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6acb28346f87b2310fc00ec1fccba2b6">&#9670;&nbsp;</a></span>ALTCP_MBEDTLS_SESSION_CACHE_TIMEOUT_SECONDS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define ALTCP_MBEDTLS_SESSION_CACHE_TIMEOUT_SECONDS&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
<p>Set a session timeout in seconds for the basic session cache ATTENTION: Using a session cache can lower security by reusing keys! </p>
</div>
</div>
<a id="ac8dbfe10a4a9a64c1e2c62ea97e48639"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8dbfe10a4a9a64c1e2c62ea97e48639">&#9670;&nbsp;</a></span>LWIP_ALTCP_TLS_MBEDTLS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LWIP_ALTCP_TLS_MBEDTLS&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
<p>LWIP_ALTCP_TLS_MBEDTLS==1: use mbedTLS for TLS support for altcp API mbedtls include directory must be reachable via include search path </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="dir_f9284811ac594eafdc3134d5f8b945cb.html">apps</a></li><li class="navelem"><a class="el" href="altcp__tls__mbedtls__opts_8h.html">altcp_tls_mbedtls_opts.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,6 @@
var altcp__tls__mbedtls__opts_8h =
[
[ "ALTCP_MBEDTLS_DEBUG", "altcp__tls__mbedtls__opts_8h.html#a7727456eeb0b3311213936413d238989", null ],
[ "ALTCP_MBEDTLS_SESSION_CACHE_TIMEOUT_SECONDS", "altcp__tls__mbedtls__opts_8h.html#a6acb28346f87b2310fc00ec1fccba2b6", null ],
[ "LWIP_ALTCP_TLS_MBEDTLS", "altcp__tls__mbedtls__opts_8h.html#ac8dbfe10a4a9a64c1e2c62ea97e48639", null ]
];

View File

@ -0,0 +1,105 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/apps/altcp_tls/altcp_tls_mbedtls_structs.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('altcp__tls__mbedtls__structs_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">altcp_tls_mbedtls_structs.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="altcp__tls__mbedtls__opts_8h.html">lwip/apps/altcp_tls_mbedtls_opts.h</a>&quot;</code><br />
</div><a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Application layered TCP/TLS connection API (to be used from TCPIP thread)</p>
<p>This file contains structure definitions for a TLS layer using mbedTLS. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li><li class="navelem"><a class="el" href="dir_1cb496c74bbaf54ecc99133e1c434e0c.html">altcp_tls</a></li><li class="navelem"><a class="el" href="altcp__tls__mbedtls__structs_8h.html">altcp_tls_mbedtls_structs.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,228 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: Data Structures</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('annotated.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Data Structures</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct__lwiperf__settings.html" target="_self">_lwiperf_settings</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct__lwiperf__state__tcp.html" target="_self">_lwiperf_state_tcp</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structaltcp__allocator__s.html" target="_self">altcp_allocator_s</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structapi__msg.html" target="_self">api_msg</a></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structautoip.html" target="_self">autoip</a></td><td class="desc"></td></tr>
<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structbridgeif__initdata__s.html" target="_self">bridgeif_initdata_s</a></td><td class="desc"></td></tr>
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structdhcp6__msg.html" target="_self">dhcp6_msg</a></td><td class="desc"></td></tr>
<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structdhcp__msg.html" target="_self">dhcp_msg</a></td><td class="desc"></td></tr>
<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structdns__answer.html" target="_self">dns_answer</a></td><td class="desc"></td></tr>
<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structdns__api__msg.html" target="_self">dns_api_msg</a></td><td class="desc"></td></tr>
<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structdns__hdr.html" target="_self">dns_hdr</a></td><td class="desc"></td></tr>
<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structdns__query.html" target="_self">dns_query</a></td><td class="desc"></td></tr>
<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structdns__req__entry.html" target="_self">dns_req_entry</a></td><td class="desc"></td></tr>
<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structdns__table__entry.html" target="_self">dns_table_entry</a></td><td class="desc"></td></tr>
<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeth__addr.html" target="_self">eth_addr</a></td><td class="desc"></td></tr>
<tr id="row_15_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeth__hdr.html" target="_self">eth_hdr</a></td><td class="desc"></td></tr>
<tr id="row_16_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structeth__vlan__hdr.html" target="_self">eth_vlan_hdr</a></td><td class="desc"></td></tr>
<tr id="row_17_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structetharp__hdr.html" target="_self">etharp_hdr</a></td><td class="desc"></td></tr>
<tr id="row_18_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structetharp__q__entry.html" target="_self">etharp_q_entry</a></td><td class="desc"></td></tr>
<tr id="row_19_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structgethostbyname__r__helper.html" target="_self">gethostbyname_r_helper</a></td><td class="desc"></td></tr>
<tr id="row_20_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structicmp6__echo__hdr.html" target="_self">icmp6_echo_hdr</a></td><td class="desc"></td></tr>
<tr id="row_21_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structicmp6__hdr.html" target="_self">icmp6_hdr</a></td><td class="desc"></td></tr>
<tr id="row_22_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structicmp__echo__hdr.html" target="_self">icmp_echo_hdr</a></td><td class="desc"></td></tr>
<tr id="row_23_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structieee__802154__hdr.html" target="_self">ieee_802154_hdr</a></td><td class="desc"></td></tr>
<tr id="row_24_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structigmp__group.html" target="_self">igmp_group</a></td><td class="desc"></td></tr>
<tr id="row_25_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structigmp__msg.html" target="_self">igmp_msg</a></td><td class="desc"></td></tr>
<tr id="row_26_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structip4__addr.html" target="_self">ip4_addr</a></td><td class="desc"></td></tr>
<tr id="row_27_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structip4__addr__packed.html" target="_self">ip4_addr_packed</a></td><td class="desc"></td></tr>
<tr id="row_28_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structip4__addr__wordaligned.html" target="_self">ip4_addr_wordaligned</a></td><td class="desc"></td></tr>
<tr id="row_29_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structip6__addr.html" target="_self">ip6_addr</a></td><td class="desc"></td></tr>
<tr id="row_30_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structip6__addr__packed.html" target="_self">ip6_addr_packed</a></td><td class="desc"></td></tr>
<tr id="row_31_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structip6__hdr.html" target="_self">ip6_hdr</a></td><td class="desc"></td></tr>
<tr id="row_32_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structip6__reass__helper.html" target="_self">ip6_reass_helper</a></td><td class="desc"></td></tr>
<tr id="row_33_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structip6__reassdata.html" target="_self">ip6_reassdata</a></td><td class="desc"></td></tr>
<tr id="row_34_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structip__addr.html" target="_self">ip_addr</a></td><td class="desc"></td></tr>
<tr id="row_35_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structip__globals.html" target="_self">ip_globals</a></td><td class="desc"></td></tr>
<tr id="row_36_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structip__reass__helper.html" target="_self">ip_reass_helper</a></td><td class="desc"></td></tr>
<tr id="row_37_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structip__reassdata.html" target="_self">ip_reassdata</a></td><td class="desc"></td></tr>
<tr id="row_38_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlowpan6__ieee802154__data.html" target="_self">lowpan6_ieee802154_data</a></td><td class="desc"></td></tr>
<tr id="row_39_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlowpan6__link__addr.html" target="_self">lowpan6_link_addr</a></td><td class="desc"></td></tr>
<tr id="row_40_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlowpan6__reass__helper.html" target="_self">lowpan6_reass_helper</a></td><td class="desc"></td></tr>
<tr id="row_41_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlwip__cyclic__timer.html" target="_self">lwip_cyclic_timer</a></td><td class="desc"></td></tr>
<tr id="row_42_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlwip__select__cb.html" target="_self">lwip_select_cb</a></td><td class="desc"></td></tr>
<tr id="row_43_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlwip__sock.html" target="_self">lwip_sock</a></td><td class="desc"></td></tr>
<tr id="row_44_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmdns__host.html" target="_self">mdns_host</a></td><td class="desc"></td></tr>
<tr id="row_45_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmdns__outpacket.html" target="_self">mdns_outpacket</a></td><td class="desc"></td></tr>
<tr id="row_46_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmdns__packet.html" target="_self">mdns_packet</a></td><td class="desc"></td></tr>
<tr id="row_47_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmdns__rr__info.html" target="_self">mdns_rr_info</a></td><td class="desc"></td></tr>
<tr id="row_48_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmdns__service.html" target="_self">mdns_service</a></td><td class="desc"></td></tr>
<tr id="row_49_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmem.html" target="_self">mem</a></td><td class="desc"></td></tr>
<tr id="row_50_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmemp__desc.html" target="_self">memp_desc</a></td><td class="desc"></td></tr>
<tr id="row_51_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmld__group.html" target="_self">mld_group</a></td><td class="desc"></td></tr>
<tr id="row_52_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmld__header.html" target="_self">mld_header</a></td><td class="desc"></td></tr>
<tr id="row_53_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmqtt__client__s.html" target="_self">mqtt_client_s</a></td><td class="desc"></td></tr>
<tr id="row_54_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmqtt__connect__client__info__t.html" target="_self">mqtt_connect_client_info_t</a></td><td class="desc"></td></tr>
<tr id="row_55_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmqtt__request__t.html" target="_self">mqtt_request_t</a></td><td class="desc"></td></tr>
<tr id="row_56_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmqtt__ringbuf__t.html" target="_self">mqtt_ringbuf_t</a></td><td class="desc"></td></tr>
<tr id="row_57_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structna__header.html" target="_self">na_header</a></td><td class="desc"></td></tr>
<tr id="row_58_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnd6__neighbor__cache__entry.html" target="_self">nd6_neighbor_cache_entry</a></td><td class="desc"></td></tr>
<tr id="row_59_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnd6__q__entry.html" target="_self">nd6_q_entry</a></td><td class="desc"></td></tr>
<tr id="row_60_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetbios__answer.html" target="_self">netbios_answer</a></td><td class="desc"></td></tr>
<tr id="row_61_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetbios__hdr.html" target="_self">netbios_hdr</a></td><td class="desc"></td></tr>
<tr id="row_62_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetbios__name__hdr.html" target="_self">netbios_name_hdr</a></td><td class="desc"></td></tr>
<tr id="row_63_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetbios__question__hdr.html" target="_self">netbios_question_hdr</a></td><td class="desc"></td></tr>
<tr id="row_64_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetbios__resp.html" target="_self">netbios_resp</a></td><td class="desc"></td></tr>
<tr id="row_65_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetbuf.html" target="_self">netbuf</a></td><td class="desc"></td></tr>
<tr id="row_66_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetconn.html" target="_self">netconn</a></td><td class="desc"></td></tr>
<tr id="row_67_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetif.html" target="_self">netif</a></td><td class="desc"></td></tr>
<tr id="row_68_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_68_" class="arrow" onclick="toggleFolder('68_')">&#9658;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="unionnetif__ext__callback__args__t.html" target="_self">netif_ext_callback_args_t</a></td><td class="desc"></td></tr>
<tr id="row_68_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetif__ext__callback__args__t_1_1ipv4__changed__s.html" target="_self">ipv4_changed_s</a></td><td class="desc"></td></tr>
<tr id="row_68_1_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetif__ext__callback__args__t_1_1ipv6__addr__state__changed__s.html" target="_self">ipv6_addr_state_changed_s</a></td><td class="desc"></td></tr>
<tr id="row_68_2_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetif__ext__callback__args__t_1_1ipv6__set__s.html" target="_self">ipv6_set_s</a></td><td class="desc"></td></tr>
<tr id="row_68_3_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetif__ext__callback__args__t_1_1link__changed__s.html" target="_self">link_changed_s</a></td><td class="desc"></td></tr>
<tr id="row_68_4_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetif__ext__callback__args__t_1_1status__changed__s.html" target="_self">status_changed_s</a></td><td class="desc"></td></tr>
<tr id="row_69_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnetvector.html" target="_self">netvector</a></td><td class="desc"></td></tr>
<tr id="row_70_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structns__header.html" target="_self">ns_header</a></td><td class="desc"></td></tr>
<tr id="row_71_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structpbuf.html" target="_self">pbuf</a></td><td class="desc"></td></tr>
<tr id="row_72_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structpbuf__custom.html" target="_self">pbuf_custom</a></td><td class="desc"></td></tr>
<tr id="row_73_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structpbuf__custom__ref.html" target="_self">pbuf_custom_ref</a></td><td class="desc"></td></tr>
<tr id="row_74_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structpbuf__rom.html" target="_self">pbuf_rom</a></td><td class="desc"></td></tr>
<tr id="row_75_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structraw__pcb.html" target="_self">raw_pcb</a></td><td class="desc"></td></tr>
<tr id="row_76_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structredirect__header.html" target="_self">redirect_header</a></td><td class="desc"></td></tr>
<tr id="row_77_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrs__header.html" target="_self">rs_header</a></td><td class="desc"></td></tr>
<tr id="row_78_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsmtp__send__request.html" target="_self">smtp_send_request</a></td><td class="desc"></td></tr>
<tr id="row_79_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsmtp__session.html" target="_self">smtp_session</a></td><td class="desc"></td></tr>
<tr id="row_80_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__leaf__node.html" target="_self">snmp_leaf_node</a></td><td class="desc"></td></tr>
<tr id="row_81_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__mib.html" target="_self">snmp_mib</a></td><td class="desc"></td></tr>
<tr id="row_82_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__next__oid__state.html" target="_self">snmp_next_oid_state</a></td><td class="desc"></td></tr>
<tr id="row_83_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__node.html" target="_self">snmp_node</a></td><td class="desc"></td></tr>
<tr id="row_84_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__node__instance.html" target="_self">snmp_node_instance</a></td><td class="desc"></td></tr>
<tr id="row_85_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__obj__id.html" target="_self">snmp_obj_id</a></td><td class="desc"></td></tr>
<tr id="row_86_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__oid__range.html" target="_self">snmp_oid_range</a></td><td class="desc"></td></tr>
<tr id="row_87_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__scalar__array__node.html" target="_self">snmp_scalar_array_node</a></td><td class="desc"></td></tr>
<tr id="row_88_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__scalar__array__node__def.html" target="_self">snmp_scalar_array_node_def</a></td><td class="desc"></td></tr>
<tr id="row_89_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__scalar__node.html" target="_self">snmp_scalar_node</a></td><td class="desc"></td></tr>
<tr id="row_90_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__table__col__def.html" target="_self">snmp_table_col_def</a></td><td class="desc"></td></tr>
<tr id="row_91_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__table__node.html" target="_self">snmp_table_node</a></td><td class="desc"></td></tr>
<tr id="row_92_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__table__simple__node.html" target="_self">snmp_table_simple_node</a></td><td class="desc"></td></tr>
<tr id="row_93_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__threadsync__instance.html" target="_self">snmp_threadsync_instance</a></td><td class="desc"></td></tr>
<tr id="row_94_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__threadsync__node.html" target="_self">snmp_threadsync_node</a></td><td class="desc"></td></tr>
<tr id="row_95_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__tree__node.html" target="_self">snmp_tree_node</a></td><td class="desc"></td></tr>
<tr id="row_96_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__varbind.html" target="_self">snmp_varbind</a></td><td class="desc"></td></tr>
<tr id="row_97_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsnmp__varbind__len.html" target="_self">snmp_varbind_len</a></td><td class="desc"></td></tr>
<tr id="row_98_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="unionsnmp__variant__value.html" target="_self">snmp_variant_value</a></td><td class="desc"></td></tr>
<tr id="row_99_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsntp__msg.html" target="_self">sntp_msg</a></td><td class="desc"></td></tr>
<tr id="row_100_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsntp__server.html" target="_self">sntp_server</a></td><td class="desc"></td></tr>
<tr id="row_101_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsntp__time.html" target="_self">sntp_time</a></td><td class="desc"></td></tr>
<tr id="row_102_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structsntp__timestamps.html" target="_self">sntp_timestamps</a></td><td class="desc"></td></tr>
<tr id="row_103_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="unionsockaddr__aligned.html" target="_self">sockaddr_aligned</a></td><td class="desc"></td></tr>
<tr id="row_104_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstats__.html" target="_self">stats_</a></td><td class="desc"></td></tr>
<tr id="row_105_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstats__igmp.html" target="_self">stats_igmp</a></td><td class="desc"></td></tr>
<tr id="row_106_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstats__mem.html" target="_self">stats_mem</a></td><td class="desc"></td></tr>
<tr id="row_107_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstats__mib2.html" target="_self">stats_mib2</a></td><td class="desc"></td></tr>
<tr id="row_108_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstats__mib2__netif__ctrs.html" target="_self">stats_mib2_netif_ctrs</a></td><td class="desc"></td></tr>
<tr id="row_109_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstats__proto.html" target="_self">stats_proto</a></td><td class="desc"></td></tr>
<tr id="row_110_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstats__sys.html" target="_self">stats_sys</a></td><td class="desc"></td></tr>
<tr id="row_111_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structstats__syselem.html" target="_self">stats_syselem</a></td><td class="desc"></td></tr>
<tr id="row_112_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structt_c_g_i.html" target="_self">tCGI</a></td><td class="desc"></td></tr>
<tr id="row_113_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtcp__ext__arg__callbacks.html" target="_self">tcp_ext_arg_callbacks</a></td><td class="desc"></td></tr>
<tr id="row_114_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtcp__pcb.html" target="_self">tcp_pcb</a></td><td class="desc"></td></tr>
<tr id="row_115_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtcp__pcb__listen.html" target="_self">tcp_pcb_listen</a></td><td class="desc"></td></tr>
<tr id="row_116_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structtftp__context.html" target="_self">tftp_context</a></td><td class="desc"></td></tr>
<tr id="row_117_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structthreadsync__data.html" target="_self">threadsync_data</a></td><td class="desc"></td></tr>
<tr id="row_118_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structudp__pcb.html" target="_self">udp_pcb</a></td><td class="desc"></td></tr>
<tr id="row_119_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structzepif__init.html" target="_self">zepif_init</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,123 @@
var annotated_dup =
[
[ "_lwiperf_settings", "struct__lwiperf__settings.html", null ],
[ "_lwiperf_state_tcp", "struct__lwiperf__state__tcp.html", null ],
[ "altcp_allocator_s", "structaltcp__allocator__s.html", "structaltcp__allocator__s" ],
[ "api_msg", "structapi__msg.html", "structapi__msg" ],
[ "autoip", "structautoip.html", "structautoip" ],
[ "bridgeif_initdata_s", "structbridgeif__initdata__s.html", "structbridgeif__initdata__s" ],
[ "dhcp6_msg", "structdhcp6__msg.html", null ],
[ "dhcp_msg", "structdhcp__msg.html", null ],
[ "dns_answer", "structdns__answer.html", null ],
[ "dns_api_msg", "structdns__api__msg.html", "structdns__api__msg" ],
[ "dns_hdr", "structdns__hdr.html", null ],
[ "dns_query", "structdns__query.html", null ],
[ "dns_req_entry", "structdns__req__entry.html", null ],
[ "dns_table_entry", "structdns__table__entry.html", null ],
[ "eth_addr", "structeth__addr.html", null ],
[ "eth_hdr", "structeth__hdr.html", null ],
[ "eth_vlan_hdr", "structeth__vlan__hdr.html", null ],
[ "etharp_hdr", "structetharp__hdr.html", null ],
[ "etharp_q_entry", "structetharp__q__entry.html", null ],
[ "gethostbyname_r_helper", "structgethostbyname__r__helper.html", null ],
[ "icmp6_echo_hdr", "structicmp6__echo__hdr.html", null ],
[ "icmp6_hdr", "structicmp6__hdr.html", null ],
[ "icmp_echo_hdr", "structicmp__echo__hdr.html", null ],
[ "ieee_802154_hdr", "structieee__802154__hdr.html", "structieee__802154__hdr" ],
[ "igmp_group", "structigmp__group.html", "structigmp__group" ],
[ "igmp_msg", "structigmp__msg.html", null ],
[ "ip4_addr", "structip4__addr.html", null ],
[ "ip4_addr_packed", "structip4__addr__packed.html", null ],
[ "ip4_addr_wordaligned", "structip4__addr__wordaligned.html", null ],
[ "ip6_addr", "structip6__addr.html", null ],
[ "ip6_addr_packed", "structip6__addr__packed.html", null ],
[ "ip6_hdr", "structip6__hdr.html", "structip6__hdr" ],
[ "ip6_reass_helper", "structip6__reass__helper.html", null ],
[ "ip6_reassdata", "structip6__reassdata.html", null ],
[ "ip_addr", "structip__addr.html", "structip__addr" ],
[ "ip_globals", "structip__globals.html", "structip__globals" ],
[ "ip_reass_helper", "structip__reass__helper.html", null ],
[ "ip_reassdata", "structip__reassdata.html", null ],
[ "lowpan6_ieee802154_data", "structlowpan6__ieee802154__data.html", "structlowpan6__ieee802154__data" ],
[ "lowpan6_link_addr", "structlowpan6__link__addr.html", null ],
[ "lowpan6_reass_helper", "structlowpan6__reass__helper.html", null ],
[ "lwip_cyclic_timer", "structlwip__cyclic__timer.html", null ],
[ "lwip_select_cb", "structlwip__select__cb.html", "structlwip__select__cb" ],
[ "lwip_sock", "structlwip__sock.html", "structlwip__sock" ],
[ "mdns_host", "structmdns__host.html", "structmdns__host" ],
[ "mdns_outpacket", "structmdns__outpacket.html", "structmdns__outpacket" ],
[ "mdns_packet", "structmdns__packet.html", "structmdns__packet" ],
[ "mdns_rr_info", "structmdns__rr__info.html", null ],
[ "mdns_service", "structmdns__service.html", "structmdns__service" ],
[ "mem", "structmem.html", "structmem" ],
[ "memp_desc", "structmemp__desc.html", "structmemp__desc" ],
[ "mld_group", "structmld__group.html", "structmld__group" ],
[ "mld_header", "structmld__header.html", null ],
[ "mqtt_client_s", "structmqtt__client__s.html", "structmqtt__client__s" ],
[ "mqtt_connect_client_info_t", "structmqtt__connect__client__info__t.html", "structmqtt__connect__client__info__t" ],
[ "mqtt_request_t", "structmqtt__request__t.html", "structmqtt__request__t" ],
[ "mqtt_ringbuf_t", "structmqtt__ringbuf__t.html", null ],
[ "na_header", "structna__header.html", null ],
[ "nd6_neighbor_cache_entry", "structnd6__neighbor__cache__entry.html", "structnd6__neighbor__cache__entry" ],
[ "nd6_q_entry", "structnd6__q__entry.html", null ],
[ "netbios_answer", "structnetbios__answer.html", "structnetbios__answer" ],
[ "netbios_hdr", "structnetbios__hdr.html", null ],
[ "netbios_name_hdr", "structnetbios__name__hdr.html", null ],
[ "netbios_question_hdr", "structnetbios__question__hdr.html", null ],
[ "netbios_resp", "structnetbios__resp.html", null ],
[ "netbuf", "structnetbuf.html", null ],
[ "netconn", "structnetconn.html", "structnetconn" ],
[ "netif", "structnetif.html", "structnetif" ],
[ "netif_ext_callback_args_t", "unionnetif__ext__callback__args__t.html", "unionnetif__ext__callback__args__t" ],
[ "netvector", "structnetvector.html", "structnetvector" ],
[ "ns_header", "structns__header.html", null ],
[ "pbuf", "structpbuf.html", "structpbuf" ],
[ "pbuf_custom", "structpbuf__custom.html", "structpbuf__custom" ],
[ "pbuf_custom_ref", "structpbuf__custom__ref.html", "structpbuf__custom__ref" ],
[ "pbuf_rom", "structpbuf__rom.html", "structpbuf__rom" ],
[ "raw_pcb", "structraw__pcb.html", "structraw__pcb" ],
[ "redirect_header", "structredirect__header.html", null ],
[ "rs_header", "structrs__header.html", null ],
[ "smtp_send_request", "structsmtp__send__request.html", "structsmtp__send__request" ],
[ "smtp_session", "structsmtp__session.html", "structsmtp__session" ],
[ "snmp_leaf_node", "structsnmp__leaf__node.html", "structsnmp__leaf__node" ],
[ "snmp_mib", "structsnmp__mib.html", null ],
[ "snmp_next_oid_state", "structsnmp__next__oid__state.html", null ],
[ "snmp_node", "structsnmp__node.html", "structsnmp__node" ],
[ "snmp_node_instance", "structsnmp__node__instance.html", "structsnmp__node__instance" ],
[ "snmp_obj_id", "structsnmp__obj__id.html", null ],
[ "snmp_oid_range", "structsnmp__oid__range.html", null ],
[ "snmp_scalar_array_node", "structsnmp__scalar__array__node.html", "structsnmp__scalar__array__node" ],
[ "snmp_scalar_array_node_def", "structsnmp__scalar__array__node__def.html", null ],
[ "snmp_scalar_node", "structsnmp__scalar__node.html", "structsnmp__scalar__node" ],
[ "snmp_table_col_def", "structsnmp__table__col__def.html", null ],
[ "snmp_table_node", "structsnmp__table__node.html", "structsnmp__table__node" ],
[ "snmp_table_simple_node", "structsnmp__table__simple__node.html", null ],
[ "snmp_threadsync_instance", "structsnmp__threadsync__instance.html", null ],
[ "snmp_threadsync_node", "structsnmp__threadsync__node.html", null ],
[ "snmp_tree_node", "structsnmp__tree__node.html", "structsnmp__tree__node" ],
[ "snmp_varbind", "structsnmp__varbind.html", "structsnmp__varbind" ],
[ "snmp_varbind_len", "structsnmp__varbind__len.html", null ],
[ "snmp_variant_value", "unionsnmp__variant__value.html", null ],
[ "sntp_msg", "structsntp__msg.html", null ],
[ "sntp_server", "structsntp__server.html", "structsntp__server" ],
[ "sntp_time", "structsntp__time.html", null ],
[ "sntp_timestamps", "structsntp__timestamps.html", null ],
[ "sockaddr_aligned", "unionsockaddr__aligned.html", null ],
[ "stats_", "structstats__.html", "structstats__" ],
[ "stats_igmp", "structstats__igmp.html", null ],
[ "stats_mem", "structstats__mem.html", null ],
[ "stats_mib2", "structstats__mib2.html", null ],
[ "stats_mib2_netif_ctrs", "structstats__mib2__netif__ctrs.html", "structstats__mib2__netif__ctrs" ],
[ "stats_proto", "structstats__proto.html", null ],
[ "stats_sys", "structstats__sys.html", null ],
[ "stats_syselem", "structstats__syselem.html", null ],
[ "tCGI", "structt_c_g_i.html", null ],
[ "tcp_ext_arg_callbacks", "structtcp__ext__arg__callbacks.html", "structtcp__ext__arg__callbacks" ],
[ "tcp_pcb", "structtcp__pcb.html", "structtcp__pcb" ],
[ "tcp_pcb_listen", "structtcp__pcb__listen.html", "structtcp__pcb__listen" ],
[ "tftp_context", "structtftp__context.html", "structtftp__context" ],
[ "threadsync_data", "structthreadsync__data.html", null ],
[ "udp_pcb", "structudp__pcb.html", "structudp__pcb" ],
[ "zepif_init", "structzepif__init.html", "structzepif__init" ]
];

View File

@ -0,0 +1,861 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/api.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('api_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">api.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="arch_8h.html">lwip/arch.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="netbuf_8h.html">lwip/netbuf.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="sys_8h.html">lwip/sys.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ip__addr_8h.html">lwip/ip_addr.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="err_8h.html">lwip/err.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnetconn.html">netconn</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnetvector.html">netvector</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:af77be7590d3712259e78103c1dddf63f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#af77be7590d3712259e78103c1dddf63f">NETCONN_FLAG_MBOXCLOSED</a>&#160;&#160;&#160;0x01</td></tr>
<tr class="separator:af77be7590d3712259e78103c1dddf63f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abee57aa0ba63e35742d411bc5224900a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#abee57aa0ba63e35742d411bc5224900a">NETCONN_FLAG_NON_BLOCKING</a>&#160;&#160;&#160;0x02</td></tr>
<tr class="separator:abee57aa0ba63e35742d411bc5224900a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70bb861ee643b60ee402fd48f581f58d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a70bb861ee643b60ee402fd48f581f58d">NETCONN_FLAG_IN_NONBLOCKING_CONNECT</a>&#160;&#160;&#160;0x04</td></tr>
<tr class="separator:a70bb861ee643b60ee402fd48f581f58d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d791955a4256a0589a3844e4e6f0f9c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a9d791955a4256a0589a3844e4e6f0f9c">NETCONN_FLAG_CHECK_WRITESPACE</a>&#160;&#160;&#160;0x10</td></tr>
<tr class="separator:a9d791955a4256a0589a3844e4e6f0f9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60892e4eb139f10157847fea4266bf5b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a60892e4eb139f10157847fea4266bf5b">NETCONN_FLAG_IPV6_V6ONLY</a>&#160;&#160;&#160;0x20</td></tr>
<tr class="separator:a60892e4eb139f10157847fea4266bf5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24d62a2a03ba421fcf2bdce1ea89b949"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a24d62a2a03ba421fcf2bdce1ea89b949">NETCONN_FIN_RX_PENDING</a>&#160;&#160;&#160;0x80</td></tr>
<tr class="separator:a24d62a2a03ba421fcf2bdce1ea89b949"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ce590f58be8f60dbde361920863b26d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a3ce590f58be8f60dbde361920863b26d">API_EVENT</a>(c, e, l)</td></tr>
<tr class="separator:a3ce590f58be8f60dbde361920863b26d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab2bd1d5e633e14e428cfc0ca908d5e0c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gab2bd1d5e633e14e428cfc0ca908d5e0c">netconn_new</a>(t)&#160;&#160;&#160;<a class="el" href="api_8h.html#ad0a0434e5ff08bb350740cb840e2aca8">netconn_new_with_proto_and_callback</a>(t, 0, NULL)</td></tr>
<tr class="separator:gab2bd1d5e633e14e428cfc0ca908d5e0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62cd17ad03bb2817cb0c419e1c9790b1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a62cd17ad03bb2817cb0c419e1c9790b1">netconn_type</a>(conn)&#160;&#160;&#160;(conn-&gt;type)</td></tr>
<tr class="separator:a62cd17ad03bb2817cb0c419e1c9790b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1065e769f2276270722a7700182077bc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#ga1065e769f2276270722a7700182077bc">netconn_peer</a>(c, i, p)&#160;&#160;&#160;<a class="el" href="api_8h.html#a28430d1d86733f1bf98dc31305c42104">netconn_getaddr</a>(c,i,p,0)</td></tr>
<tr class="separator:ga1065e769f2276270722a7700182077bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga37ec33522cfc26fa57251c33e4cebb3e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#ga37ec33522cfc26fa57251c33e4cebb3e">netconn_addr</a>(c, i, p)&#160;&#160;&#160;<a class="el" href="api_8h.html#a28430d1d86733f1bf98dc31305c42104">netconn_getaddr</a>(c,i,p,1)</td></tr>
<tr class="separator:ga37ec33522cfc26fa57251c33e4cebb3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga43e3f4c2169dec0f666c502e490416b7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#ga43e3f4c2169dec0f666c502e490416b7">netconn_listen</a>(conn)&#160;&#160;&#160;<a class="el" href="group__netconn__tcp.html#ga84333ba8e7cdf45558d2b4795f53265d">netconn_listen_with_backlog</a>(conn, <a class="el" href="group__lwip__opts__tcp.html#ga93cce3f47e33df11248c908d1775bacf">TCP_DEFAULT_LISTEN_BACKLOG</a>)</td></tr>
<tr class="separator:ga43e3f4c2169dec0f666c502e490416b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafea5e9b90770a7c6cd0762ceb65e5b46"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#gafea5e9b90770a7c6cd0762ceb65e5b46">netconn_write</a>(conn, dataptr, size, apiflags)&#160;&#160;&#160;<a class="el" href="group__netconn__tcp.html#gacf9ce6f71652739d6be2ca83f7c423bf">netconn_write_partly</a>(conn, dataptr, size, apiflags, NULL)</td></tr>
<tr class="separator:gafea5e9b90770a7c6cd0762ceb65e5b46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a578dd5b55e4457e0d23574ec9c55bb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a6a578dd5b55e4457e0d23574ec9c55bb">netconn_set_nonblocking</a>(conn, val)</td></tr>
<tr class="separator:a6a578dd5b55e4457e0d23574ec9c55bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5789f0030b895b40625a74deb5a1092f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a5789f0030b895b40625a74deb5a1092f">netconn_is_nonblocking</a>(conn)&#160;&#160;&#160;(((conn)-&gt;flags &amp; <a class="el" href="api_8h.html#abee57aa0ba63e35742d411bc5224900a">NETCONN_FLAG_NON_BLOCKING</a>) != 0)</td></tr>
<tr class="separator:a5789f0030b895b40625a74deb5a1092f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae56911e2d92bebf43d73e116530e41f1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gae56911e2d92bebf43d73e116530e41f1">netconn_set_ipv6only</a>(conn, val)</td></tr>
<tr class="separator:gae56911e2d92bebf43d73e116530e41f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf001c7d5fbf97c04eb1d9ac7d14c9c31"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gaf001c7d5fbf97c04eb1d9ac7d14c9c31">netconn_get_ipv6only</a>(conn)&#160;&#160;&#160;(((conn)-&gt;flags &amp; <a class="el" href="api_8h.html#a60892e4eb139f10157847fea4266bf5b">NETCONN_FLAG_IPV6_V6ONLY</a>) != 0)</td></tr>
<tr class="separator:gaf001c7d5fbf97c04eb1d9ac7d14c9c31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ce3ad9f660e99b11fec20cafaf8f016"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a3ce3ad9f660e99b11fec20cafaf8f016">netconn_set_sendtimeout</a>(conn, timeout)&#160;&#160;&#160;((conn)-&gt;send_timeout = (timeout))</td></tr>
<tr class="separator:a3ce3ad9f660e99b11fec20cafaf8f016"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d6e84458eec796b0b0ce1bb247f323f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a7d6e84458eec796b0b0ce1bb247f323f">netconn_get_sendtimeout</a>(conn)&#160;&#160;&#160;((conn)-&gt;send_timeout)</td></tr>
<tr class="separator:a7d6e84458eec796b0b0ce1bb247f323f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04785274634a5b504c760731c2e70725"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a04785274634a5b504c760731c2e70725">netconn_set_recvbufsize</a>(conn, recvbufsize)&#160;&#160;&#160;((conn)-&gt;recv_bufsize = (recvbufsize))</td></tr>
<tr class="separator:a04785274634a5b504c760731c2e70725"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0298c287dc3823047c378c014ff1eb0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#ac0298c287dc3823047c378c014ff1eb0">netconn_get_recvbufsize</a>(conn)&#160;&#160;&#160;((conn)-&gt;recv_bufsize)</td></tr>
<tr class="separator:ac0298c287dc3823047c378c014ff1eb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a3e130339f00202b3ab714af502163a2d"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a3e130339f00202b3ab714af502163a2d">netconn_callback</a>) (struct <a class="el" href="structnetconn.html">netconn</a> *, enum <a class="el" href="api_8h.html#af722260882d14c49afb765293ffb0155">netconn_evt</a>, u16_t len)</td></tr>
<tr class="separator:a3e130339f00202b3ab714af502163a2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gaaba260d28d105fb4bce9185fd0300d91"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a> { , <br />
&#160;&#160;<a class="el" href="group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a75d14318b91af7a452230189f47e5e1a">NETCONN_TCP</a> = 0x10,
<a class="el" href="group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91ae7efa7c4e50b7b381531a2136cd5a013">NETCONN_TCP_IPV6</a> = NETCONN_TCP | 0x08,
<a class="el" href="group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a6b8ec191d69f7e639f4ab40779069636">NETCONN_UDP</a> = 0x20,
<a class="el" href="group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a655e1625cc7e6a93f1e3d2646f56a1e4">NETCONN_UDPLITE</a> = 0x21,
<br />
&#160;&#160;<a class="el" href="group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a7e0c3f566b3d4321b36b711b6b1ad6de">NETCONN_UDPNOCHKSUM</a> = 0x22,
<a class="el" href="group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a34ee1c89f6705462590a4fe2c9772d9e">NETCONN_UDP_IPV6</a> = NETCONN_UDP | 0x08,
<a class="el" href="group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91aa9cabc9d90606b5c5939fcc02ac588c7">NETCONN_UDPLITE_IPV6</a> = NETCONN_UDPLITE | 0x08,
<a class="el" href="group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a2c7f548d26f6c411f084b6c59247b60e">NETCONN_UDPNOCHKSUM_IPV6</a> = NETCONN_UDPNOCHKSUM | 0x08,
<br />
&#160;&#160;<a class="el" href="group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a0d828a7e9c1614d4cae56602b09f39e9">NETCONN_RAW</a> = 0x40
<br />
}</td></tr>
<tr class="separator:gaaba260d28d105fb4bce9185fd0300d91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c6c9c1869f443c5ec7b31180a44fada"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a2c6c9c1869f443c5ec7b31180a44fada">netconn_state</a> </td></tr>
<tr class="separator:a2c6c9c1869f443c5ec7b31180a44fada"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af722260882d14c49afb765293ffb0155"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#af722260882d14c49afb765293ffb0155">netconn_evt</a> </td></tr>
<tr class="separator:af722260882d14c49afb765293ffb0155"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c6ded2c082de1536019b197a0a912db"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a5c6ded2c082de1536019b197a0a912db">netconn_igmp</a> </td></tr>
<tr class="separator:a5c6ded2c082de1536019b197a0a912db"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ad0a0434e5ff08bb350740cb840e2aca8"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#ad0a0434e5ff08bb350740cb840e2aca8">netconn_new_with_proto_and_callback</a> (enum <a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a> t, u8_t proto, <a class="el" href="api_8h.html#a3e130339f00202b3ab714af502163a2d">netconn_callback</a> callback)</td></tr>
<tr class="separator:ad0a0434e5ff08bb350740cb840e2aca8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad5c079af0ad791a92fe9dade375744f0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gad5c079af0ad791a92fe9dade375744f0">netconn_prepare_delete</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn)</td></tr>
<tr class="separator:gad5c079af0ad791a92fe9dade375744f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab411221f912a6d9e4c82ac3963989403"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gab411221f912a6d9e4c82ac3963989403">netconn_delete</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn)</td></tr>
<tr class="separator:gab411221f912a6d9e4c82ac3963989403"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28430d1d86733f1bf98dc31305c42104"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a28430d1d86733f1bf98dc31305c42104">netconn_getaddr</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *addr, u16_t *port, u8_t local)</td></tr>
<tr class="separator:a28430d1d86733f1bf98dc31305c42104"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga63bcc4d7bd150674fa953a1253fa6230"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#ga63bcc4d7bd150674fa953a1253fa6230">netconn_bind</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *addr, u16_t port)</td></tr>
<tr class="separator:ga63bcc4d7bd150674fa953a1253fa6230"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa78479deeedcecd3bacade387ac40cc5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gaa78479deeedcecd3bacade387ac40cc5">netconn_bind_if</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, u8_t if_idx)</td></tr>
<tr class="separator:gaa78479deeedcecd3bacade387ac40cc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacba7f74d973872ad0b88b9a96098cf77"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gacba7f74d973872ad0b88b9a96098cf77">netconn_connect</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *addr, u16_t port)</td></tr>
<tr class="separator:gacba7f74d973872ad0b88b9a96098cf77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga90bb4c4d1af6602a655b78fce0520402"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__udp.html#ga90bb4c4d1af6602a655b78fce0520402">netconn_disconnect</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn)</td></tr>
<tr class="separator:ga90bb4c4d1af6602a655b78fce0520402"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga84333ba8e7cdf45558d2b4795f53265d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#ga84333ba8e7cdf45558d2b4795f53265d">netconn_listen_with_backlog</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, u8_t backlog)</td></tr>
<tr class="separator:ga84333ba8e7cdf45558d2b4795f53265d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga13593148f60f7bbc6a505b567f175d69"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#ga13593148f60f7bbc6a505b567f175d69">netconn_accept</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetconn.html">netconn</a> **new_conn)</td></tr>
<tr class="separator:ga13593148f60f7bbc6a505b567f175d69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga50490bab058f4e740798beffcf48cabf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#ga50490bab058f4e740798beffcf48cabf">netconn_recv</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetbuf.html">netbuf</a> **new_buf)</td></tr>
<tr class="separator:ga50490bab058f4e740798beffcf48cabf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a805a90b546c5a149f04782351633979b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a805a90b546c5a149f04782351633979b">netconn_recv_udp_raw_netbuf</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetbuf.html">netbuf</a> **new_buf)</td></tr>
<tr class="separator:a805a90b546c5a149f04782351633979b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a505c3b8e400babf9681e09c945b7f421"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a505c3b8e400babf9681e09c945b7f421">netconn_recv_udp_raw_netbuf_flags</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetbuf.html">netbuf</a> **new_buf, u8_t apiflags)</td></tr>
<tr class="separator:a505c3b8e400babf9681e09c945b7f421"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6893cb7648733d1f05696bac94e10490"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#ga6893cb7648733d1f05696bac94e10490">netconn_recv_tcp_pbuf</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structpbuf.html">pbuf</a> **new_buf)</td></tr>
<tr class="separator:ga6893cb7648733d1f05696bac94e10490"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabb8a242c445ef928c23258a2b2344294"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#gabb8a242c445ef928c23258a2b2344294">netconn_recv_tcp_pbuf_flags</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structpbuf.html">pbuf</a> **new_buf, u8_t apiflags)</td></tr>
<tr class="separator:gabb8a242c445ef928c23258a2b2344294"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8e1d852119bda1e1b602c2995282ef0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__udp.html#ga8e1d852119bda1e1b602c2995282ef0c">netconn_sendto</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetbuf.html">netbuf</a> *buf, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *addr, u16_t port)</td></tr>
<tr class="separator:ga8e1d852119bda1e1b602c2995282ef0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac4d4d10153d47c80a783c34b27c66238"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__udp.html#gac4d4d10153d47c80a783c34b27c66238">netconn_send</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetbuf.html">netbuf</a> *buf)</td></tr>
<tr class="separator:gac4d4d10153d47c80a783c34b27c66238"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacf9ce6f71652739d6be2ca83f7c423bf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#gacf9ce6f71652739d6be2ca83f7c423bf">netconn_write_partly</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, const void *dataptr, size_t size, u8_t apiflags, size_t *bytes_written)</td></tr>
<tr class="separator:gacf9ce6f71652739d6be2ca83f7c423bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a992b4fe8a855fd94861738f7260d0a32"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api_8h.html#a992b4fe8a855fd94861738f7260d0a32">netconn_write_vectors_partly</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetvector.html">netvector</a> *vectors, u16_t vectorcnt, u8_t apiflags, size_t *bytes_written)</td></tr>
<tr class="separator:a992b4fe8a855fd94861738f7260d0a32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga25bb1c1c9928f91f53149a026e2e2624"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#ga25bb1c1c9928f91f53149a026e2e2624">netconn_close</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn)</td></tr>
<tr class="separator:ga25bb1c1c9928f91f53149a026e2e2624"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6ec6b2cf7b0f59e9371e38ae7dea2a63"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#ga6ec6b2cf7b0f59e9371e38ae7dea2a63">netconn_shutdown</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, u8_t shut_rx, u8_t shut_tx)</td></tr>
<tr class="separator:ga6ec6b2cf7b0f59e9371e38ae7dea2a63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaaf2f92eeb38dca70b3e6ad98c3c45ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__udp.html#gaaaf2f92eeb38dca70b3e6ad98c3c45ed">netconn_join_leave_group</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *multiaddr, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *netif_addr, enum <a class="el" href="api_8h.html#a5c6ded2c082de1536019b197a0a912db">netconn_igmp</a> join_or_leave)</td></tr>
<tr class="separator:gaaaf2f92eeb38dca70b3e6ad98c3c45ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5db2a1cf06a5fbb36f433e637da8729b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__udp.html#ga5db2a1cf06a5fbb36f433e637da8729b">netconn_join_leave_group_netif</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *multiaddr, u8_t if_idx, enum <a class="el" href="api_8h.html#a5c6ded2c082de1536019b197a0a912db">netconn_igmp</a> join_or_leave)</td></tr>
<tr class="separator:ga5db2a1cf06a5fbb36f433e637da8729b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafb3494b149dff96ed8d1acb770ab52f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gafb3494b149dff96ed8d1acb770ab52f5">netconn_gethostbyname_addrtype</a> (const char *name, <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *addr, u8_t dns_addrtype)</td></tr>
<tr class="separator:gafb3494b149dff96ed8d1acb770ab52f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab9eccae90351eb6c3d2ca690068445d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gab9eccae90351eb6c3d2ca690068445d4">netconn_err</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn)</td></tr>
<tr class="separator:gab9eccae90351eb6c3d2ca690068445d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>netconn API (to be used from non-TCPIP threads) </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a3ce590f58be8f60dbde361920863b26d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ce590f58be8f60dbde361920863b26d">&#9670;&nbsp;</a></span>API_EVENT</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define API_EVENT</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">c, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">e, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">l&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">if</span> (c-&gt;callback) { \</div><div class="line"> (*c-&gt;callback)(c, e, l); \</div><div class="line"> }</div></div><!-- fragment --><p>Register an Network connection event </p>
</div>
</div>
<a id="a24d62a2a03ba421fcf2bdce1ea89b949"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24d62a2a03ba421fcf2bdce1ea89b949">&#9670;&nbsp;</a></span>NETCONN_FIN_RX_PENDING</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define NETCONN_FIN_RX_PENDING&#160;&#160;&#160;0x80</td>
</tr>
</table>
</div><div class="memdoc">
<p>A FIN has been received but not passed to the application yet </p>
</div>
</div>
<a id="a9d791955a4256a0589a3844e4e6f0f9c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d791955a4256a0589a3844e4e6f0f9c">&#9670;&nbsp;</a></span>NETCONN_FLAG_CHECK_WRITESPACE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define NETCONN_FLAG_CHECK_WRITESPACE&#160;&#160;&#160;0x10</td>
</tr>
</table>
</div><div class="memdoc">
<p>If a nonblocking write has been rejected before, poll_tcp needs to check if the netconn is writable again </p>
</div>
</div>
<a id="a70bb861ee643b60ee402fd48f581f58d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70bb861ee643b60ee402fd48f581f58d">&#9670;&nbsp;</a></span>NETCONN_FLAG_IN_NONBLOCKING_CONNECT</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define NETCONN_FLAG_IN_NONBLOCKING_CONNECT&#160;&#160;&#160;0x04</td>
</tr>
</table>
</div><div class="memdoc">
<p>Was the last connect action a non-blocking one? </p>
</div>
</div>
<a id="a60892e4eb139f10157847fea4266bf5b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60892e4eb139f10157847fea4266bf5b">&#9670;&nbsp;</a></span>NETCONN_FLAG_IPV6_V6ONLY</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define NETCONN_FLAG_IPV6_V6ONLY&#160;&#160;&#160;0x20</td>
</tr>
</table>
</div><div class="memdoc">
<p>If this flag is set then only IPv6 communication is allowed on the netconn. As per RFC#3493 this features defaults to OFF allowing dual-stack usage by default. </p>
</div>
</div>
<a id="af77be7590d3712259e78103c1dddf63f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af77be7590d3712259e78103c1dddf63f">&#9670;&nbsp;</a></span>NETCONN_FLAG_MBOXCLOSED</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define NETCONN_FLAG_MBOXCLOSED&#160;&#160;&#160;0x01</td>
</tr>
</table>
</div><div class="memdoc">
<p>This netconn had an error, don't block on recvmbox/acceptmbox any more </p>
</div>
</div>
<a id="abee57aa0ba63e35742d411bc5224900a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abee57aa0ba63e35742d411bc5224900a">&#9670;&nbsp;</a></span>NETCONN_FLAG_NON_BLOCKING</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define NETCONN_FLAG_NON_BLOCKING&#160;&#160;&#160;0x02</td>
</tr>
</table>
</div><div class="memdoc">
<p>Should this netconn avoid blocking? </p>
</div>
</div>
<a id="ac0298c287dc3823047c378c014ff1eb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac0298c287dc3823047c378c014ff1eb0">&#9670;&nbsp;</a></span>netconn_get_recvbufsize</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define netconn_get_recvbufsize</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">conn</td><td>)</td>
<td>&#160;&#160;&#160;((conn)-&gt;recv_bufsize)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the receive buffer in bytes </p>
</div>
</div>
<a id="a7d6e84458eec796b0b0ce1bb247f323f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d6e84458eec796b0b0ce1bb247f323f">&#9670;&nbsp;</a></span>netconn_get_sendtimeout</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define netconn_get_sendtimeout</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">conn</td><td>)</td>
<td>&#160;&#160;&#160;((conn)-&gt;send_timeout)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the send timeout in milliseconds </p>
</div>
</div>
<a id="a5789f0030b895b40625a74deb5a1092f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5789f0030b895b40625a74deb5a1092f">&#9670;&nbsp;</a></span>netconn_is_nonblocking</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define netconn_is_nonblocking</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">conn</td><td>)</td>
<td>&#160;&#160;&#160;(((conn)-&gt;flags &amp; <a class="el" href="api_8h.html#abee57aa0ba63e35742d411bc5224900a">NETCONN_FLAG_NON_BLOCKING</a>) != 0)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the blocking status of netconn calls ( </p>
</div>
</div>
<a id="a6a578dd5b55e4457e0d23574ec9c55bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a578dd5b55e4457e0d23574ec9c55bb">&#9670;&nbsp;</a></span>netconn_set_nonblocking</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define netconn_set_nonblocking</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">conn, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">val&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> { <span class="keywordflow">if</span>(val) { \</div><div class="line"> netconn_set_flags(conn, <a class="code" href="api_8h.html#abee57aa0ba63e35742d411bc5224900a">NETCONN_FLAG_NON_BLOCKING</a>); \</div><div class="line">} <span class="keywordflow">else</span> { \</div><div class="line"> netconn_clear_flags(conn, <a class="code" href="api_8h.html#abee57aa0ba63e35742d411bc5224900a">NETCONN_FLAG_NON_BLOCKING</a>); }} <span class="keywordflow">while</span>(0)</div><div class="ttc" id="api_8h_html_abee57aa0ba63e35742d411bc5224900a"><div class="ttname"><a href="api_8h.html#abee57aa0ba63e35742d411bc5224900a">NETCONN_FLAG_NON_BLOCKING</a></div><div class="ttdeci">#define NETCONN_FLAG_NON_BLOCKING</div><div class="ttdef"><b>Definition:</b> api.h:73</div></div>
</div><!-- fragment --><p>Set the blocking status of netconn calls ( </p>
</div>
</div>
<a id="a04785274634a5b504c760731c2e70725"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a04785274634a5b504c760731c2e70725">&#9670;&nbsp;</a></span>netconn_set_recvbufsize</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define netconn_set_recvbufsize</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">conn, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">recvbufsize&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>&#160;&#160;&#160;((conn)-&gt;recv_bufsize = (recvbufsize))</td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the receive buffer in bytes </p>
</div>
</div>
<a id="a3ce3ad9f660e99b11fec20cafaf8f016"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ce3ad9f660e99b11fec20cafaf8f016">&#9670;&nbsp;</a></span>netconn_set_sendtimeout</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define netconn_set_sendtimeout</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">conn, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">timeout&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>&#160;&#160;&#160;((conn)-&gt;send_timeout = (timeout))</td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the send timeout in milliseconds </p>
</div>
</div>
<a id="a62cd17ad03bb2817cb0c419e1c9790b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62cd17ad03bb2817cb0c419e1c9790b1">&#9670;&nbsp;</a></span>netconn_type</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a></td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">conn</td><td>)</td>
<td>&#160;&#160;&#160;(conn-&gt;type)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the type of a netconn (as enum netconn_type). </p>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="a3e130339f00202b3ab714af502163a2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e130339f00202b3ab714af502163a2d">&#9670;&nbsp;</a></span>netconn_callback</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef void(* netconn_callback) (struct <a class="el" href="structnetconn.html">netconn</a> *, enum <a class="el" href="api_8h.html#af722260882d14c49afb765293ffb0155">netconn_evt</a>, u16_t len)</td>
</tr>
</table>
</div><div class="memdoc">
<p>A callback prototype to inform about events for a netconn </p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="af722260882d14c49afb765293ffb0155"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af722260882d14c49afb765293ffb0155">&#9670;&nbsp;</a></span>netconn_evt</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="api_8h.html#af722260882d14c49afb765293ffb0155">netconn_evt</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Used to inform the callback function about changes</p>
<p>Event explanation:</p>
<p>In the netconn implementation, there are three ways to block a client:</p>
<ul>
<li>accept mbox (sys_arch_mbox_fetch(&amp;conn-&gt;acceptmbox, &amp;accept_ptr, 0); in <a class="el" href="group__netconn__tcp.html#ga13593148f60f7bbc6a505b567f175d69">netconn_accept()</a>)</li>
<li>receive mbox (sys_arch_mbox_fetch(&amp;conn-&gt;recvmbox, &amp;buf, 0); in netconn_recv_data())</li>
<li>send queue is full (sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0); in <a class="el" href="api__msg_8c.html#aca4545a471ead1bc673ea93fe85f7e5c">lwip_netconn_do_write()</a>)</li>
</ul>
<p>The events have to be seen as events signaling the state of these mboxes/semaphores. For non-blocking connections, you need to know in advance whether a call to a netconn function call would block or not, and these events tell you about that.</p>
<p>RCVPLUS events say: Safe to perform a potentially blocking call call once more. They are counted in sockets - three RCVPLUS events for accept mbox means you are safe to call netconn_accept 3 times without being blocked. Same thing for receive mbox.</p>
<p>RCVMINUS events say: Your call to to a possibly blocking function is "acknowledged". Socket implementation decrements the counter.</p>
<p>For TX, there is no need to count, its merely a flag. SENDPLUS means you may send something. SENDPLUS occurs when enough data was delivered to peer so <a class="el" href="group__netconn__udp.html#gac4d4d10153d47c80a783c34b27c66238">netconn_send()</a> can be called again. A SENDMINUS event occurs when the next call to a <a class="el" href="group__netconn__udp.html#gac4d4d10153d47c80a783c34b27c66238">netconn_send()</a> would be blocking. </p>
</div>
</div>
<a id="a5c6ded2c082de1536019b197a0a912db"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c6ded2c082de1536019b197a0a912db">&#9670;&nbsp;</a></span>netconn_igmp</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="api_8h.html#a5c6ded2c082de1536019b197a0a912db">netconn_igmp</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Used for <a class="el" href="group__netconn__udp.html#gaaaf2f92eeb38dca70b3e6ad98c3c45ed">netconn_join_leave_group()</a> </p>
</div>
</div>
<a id="a2c6c9c1869f443c5ec7b31180a44fada"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c6c9c1869f443c5ec7b31180a44fada">&#9670;&nbsp;</a></span>netconn_state</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="api_8h.html#a2c6c9c1869f443c5ec7b31180a44fada">netconn_state</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Current state of the netconn. Non-TCP netconns are always in state NETCONN_NONE! </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a28430d1d86733f1bf98dc31305c42104"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28430d1d86733f1bf98dc31305c42104">&#9670;&nbsp;</a></span>netconn_getaddr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> netconn_getaddr </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td>
<td class="paramname"><em>conn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16_t *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>local</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the local or remote IP address and port of a netconn. For RAW netconns, this returns the protocol instead of a port!</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">conn</td><td>the netconn to query </td></tr>
<tr><td class="paramname">addr</td><td>a pointer to which to save the IP address </td></tr>
<tr><td class="paramname">port</td><td>a pointer to which to save the port (or protocol for RAW) </td></tr>
<tr><td class="paramname">local</td><td>1 to get the local IP address, 0 to get the remote one </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ERR_CONN for invalid connections ERR_OK if the information was retrieved </dd></dl>
</div>
</div>
<a id="ad0a0434e5ff08bb350740cb840e2aca8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0a0434e5ff08bb350740cb840e2aca8">&#9670;&nbsp;</a></span>netconn_new_with_proto_and_callback()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structnetconn.html">netconn</a>* netconn_new_with_proto_and_callback </td>
<td>(</td>
<td class="paramtype">enum <a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a>&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>proto</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="api_8h.html#a3e130339f00202b3ab714af502163a2d">netconn_callback</a>&#160;</td>
<td class="paramname"><em>callback</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new netconn (of a specific type) that has a callback function. The corresponding pcb is also created.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>the type of 'connection' to create (</td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd>enum <a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a>) </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">proto</td><td>the IP protocol for RAW IP pcbs </td></tr>
<tr><td class="paramname">callback</td><td>a function to call on status changes (RX available, TX'ed) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a newly allocated struct netconn or NULL on memory error </dd></dl>
</div>
</div>
<a id="a805a90b546c5a149f04782351633979b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a805a90b546c5a149f04782351633979b">&#9670;&nbsp;</a></span>netconn_recv_udp_raw_netbuf()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> netconn_recv_udp_raw_netbuf </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td>
<td class="paramname"><em>conn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structnetbuf.html">netbuf</a> **&#160;</td>
<td class="paramname"><em>new_buf</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Receive data (in form of a netbuf) from a UDP or RAW netconn</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">conn</td><td>the netconn from which to receive data </td></tr>
<tr><td class="paramname">new_buf</td><td>pointer where a new netbuf is stored when received data </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ERR_OK if data has been received, an error code otherwise (timeout, memory error or another error) ERR_ARG if conn is not a UDP/RAW netconn </dd></dl>
</div>
</div>
<a id="a505c3b8e400babf9681e09c945b7f421"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a505c3b8e400babf9681e09c945b7f421">&#9670;&nbsp;</a></span>netconn_recv_udp_raw_netbuf_flags()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> netconn_recv_udp_raw_netbuf_flags </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td>
<td class="paramname"><em>conn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structnetbuf.html">netbuf</a> **&#160;</td>
<td class="paramname"><em>new_buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>apiflags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Receive data (in form of a netbuf) from a UDP or RAW netconn</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">conn</td><td>the netconn from which to receive data </td></tr>
<tr><td class="paramname">new_buf</td><td>pointer where a new netbuf is stored when received data </td></tr>
<tr><td class="paramname">apiflags</td><td>flags that control function behaviour. For now only:<ul>
<li>NETCONN_DONTBLOCK: only read data that is available now, don't wait for more data </li>
</ul>
</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ERR_OK if data has been received, an error code otherwise (timeout, memory error or another error) ERR_ARG if conn is not a UDP/RAW netconn </dd></dl>
</div>
</div>
<a id="a992b4fe8a855fd94861738f7260d0a32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a992b4fe8a855fd94861738f7260d0a32">&#9670;&nbsp;</a></span>netconn_write_vectors_partly()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> netconn_write_vectors_partly </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td>
<td class="paramname"><em>conn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structnetvector.html">netvector</a> *&#160;</td>
<td class="paramname"><em>vectors</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16_t&#160;</td>
<td class="paramname"><em>vectorcnt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>apiflags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *&#160;</td>
<td class="paramname"><em>bytes_written</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send vectorized data atomically over a TCP netconn.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">conn</td><td>the TCP netconn over which to send data </td></tr>
<tr><td class="paramname">vectors</td><td>array of vectors containing data to send </td></tr>
<tr><td class="paramname">vectorcnt</td><td>number of vectors in the array </td></tr>
<tr><td class="paramname">apiflags</td><td>combination of following flags :<ul>
<li>NETCONN_COPY: data will be copied into memory belonging to the stack</li>
<li>NETCONN_MORE: for TCP connection, PSH flag will be set on last segment sent</li>
<li>NETCONN_DONTBLOCK: only write the data if all data can be written at once </li>
</ul>
</td></tr>
<tr><td class="paramname">bytes_written</td><td>pointer to a location that receives the number of written bytes </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ERR_OK if data was sent, any other err_t on error </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="api_8h.html">api.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,66 @@
var api_8h =
[
[ "netconn", "structnetconn.html", "structnetconn" ],
[ "netvector", "structnetvector.html", "structnetvector" ],
[ "API_EVENT", "api_8h.html#a3ce590f58be8f60dbde361920863b26d", null ],
[ "netconn_addr", "group__netconn__common.html#ga37ec33522cfc26fa57251c33e4cebb3e", null ],
[ "NETCONN_FIN_RX_PENDING", "api_8h.html#a24d62a2a03ba421fcf2bdce1ea89b949", null ],
[ "NETCONN_FLAG_CHECK_WRITESPACE", "api_8h.html#a9d791955a4256a0589a3844e4e6f0f9c", null ],
[ "NETCONN_FLAG_IN_NONBLOCKING_CONNECT", "api_8h.html#a70bb861ee643b60ee402fd48f581f58d", null ],
[ "NETCONN_FLAG_IPV6_V6ONLY", "api_8h.html#a60892e4eb139f10157847fea4266bf5b", null ],
[ "NETCONN_FLAG_MBOXCLOSED", "api_8h.html#af77be7590d3712259e78103c1dddf63f", null ],
[ "NETCONN_FLAG_NON_BLOCKING", "api_8h.html#abee57aa0ba63e35742d411bc5224900a", null ],
[ "netconn_get_ipv6only", "group__netconn__common.html#gaf001c7d5fbf97c04eb1d9ac7d14c9c31", null ],
[ "netconn_get_recvbufsize", "api_8h.html#ac0298c287dc3823047c378c014ff1eb0", null ],
[ "netconn_get_sendtimeout", "api_8h.html#a7d6e84458eec796b0b0ce1bb247f323f", null ],
[ "netconn_is_nonblocking", "api_8h.html#a5789f0030b895b40625a74deb5a1092f", null ],
[ "netconn_listen", "group__netconn__tcp.html#ga43e3f4c2169dec0f666c502e490416b7", null ],
[ "netconn_new", "group__netconn__common.html#gab2bd1d5e633e14e428cfc0ca908d5e0c", null ],
[ "netconn_peer", "group__netconn__common.html#ga1065e769f2276270722a7700182077bc", null ],
[ "netconn_set_ipv6only", "group__netconn__common.html#gae56911e2d92bebf43d73e116530e41f1", null ],
[ "netconn_set_nonblocking", "api_8h.html#a6a578dd5b55e4457e0d23574ec9c55bb", null ],
[ "netconn_set_recvbufsize", "api_8h.html#a04785274634a5b504c760731c2e70725", null ],
[ "netconn_set_sendtimeout", "api_8h.html#a3ce3ad9f660e99b11fec20cafaf8f016", null ],
[ "netconn_type", "api_8h.html#a62cd17ad03bb2817cb0c419e1c9790b1", null ],
[ "netconn_write", "group__netconn__tcp.html#gafea5e9b90770a7c6cd0762ceb65e5b46", null ],
[ "netconn_callback", "api_8h.html#a3e130339f00202b3ab714af502163a2d", null ],
[ "netconn_evt", "api_8h.html#af722260882d14c49afb765293ffb0155", null ],
[ "netconn_igmp", "api_8h.html#a5c6ded2c082de1536019b197a0a912db", null ],
[ "netconn_state", "api_8h.html#a2c6c9c1869f443c5ec7b31180a44fada", null ],
[ "netconn_type", "group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91", [
[ "NETCONN_TCP", "group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a75d14318b91af7a452230189f47e5e1a", null ],
[ "NETCONN_TCP_IPV6", "group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91ae7efa7c4e50b7b381531a2136cd5a013", null ],
[ "NETCONN_UDP", "group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a6b8ec191d69f7e639f4ab40779069636", null ],
[ "NETCONN_UDPLITE", "group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a655e1625cc7e6a93f1e3d2646f56a1e4", null ],
[ "NETCONN_UDPNOCHKSUM", "group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a7e0c3f566b3d4321b36b711b6b1ad6de", null ],
[ "NETCONN_UDP_IPV6", "group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a34ee1c89f6705462590a4fe2c9772d9e", null ],
[ "NETCONN_UDPLITE_IPV6", "group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91aa9cabc9d90606b5c5939fcc02ac588c7", null ],
[ "NETCONN_UDPNOCHKSUM_IPV6", "group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a2c7f548d26f6c411f084b6c59247b60e", null ],
[ "NETCONN_RAW", "group__netconn__common.html#ggaaba260d28d105fb4bce9185fd0300d91a0d828a7e9c1614d4cae56602b09f39e9", null ]
] ],
[ "netconn_accept", "group__netconn__tcp.html#ga13593148f60f7bbc6a505b567f175d69", null ],
[ "netconn_bind", "group__netconn__common.html#ga63bcc4d7bd150674fa953a1253fa6230", null ],
[ "netconn_bind_if", "group__netconn__common.html#gaa78479deeedcecd3bacade387ac40cc5", null ],
[ "netconn_close", "group__netconn__tcp.html#ga25bb1c1c9928f91f53149a026e2e2624", null ],
[ "netconn_connect", "group__netconn__common.html#gacba7f74d973872ad0b88b9a96098cf77", null ],
[ "netconn_delete", "group__netconn__common.html#gab411221f912a6d9e4c82ac3963989403", null ],
[ "netconn_disconnect", "group__netconn__udp.html#ga90bb4c4d1af6602a655b78fce0520402", null ],
[ "netconn_err", "group__netconn__common.html#gab9eccae90351eb6c3d2ca690068445d4", null ],
[ "netconn_getaddr", "api_8h.html#a28430d1d86733f1bf98dc31305c42104", null ],
[ "netconn_gethostbyname_addrtype", "group__netconn__common.html#gafb3494b149dff96ed8d1acb770ab52f5", null ],
[ "netconn_join_leave_group", "group__netconn__udp.html#gaaaf2f92eeb38dca70b3e6ad98c3c45ed", null ],
[ "netconn_join_leave_group_netif", "group__netconn__udp.html#ga5db2a1cf06a5fbb36f433e637da8729b", null ],
[ "netconn_listen_with_backlog", "group__netconn__tcp.html#ga84333ba8e7cdf45558d2b4795f53265d", null ],
[ "netconn_new_with_proto_and_callback", "api_8h.html#ad0a0434e5ff08bb350740cb840e2aca8", null ],
[ "netconn_prepare_delete", "group__netconn__common.html#gad5c079af0ad791a92fe9dade375744f0", null ],
[ "netconn_recv", "group__netconn__common.html#ga50490bab058f4e740798beffcf48cabf", null ],
[ "netconn_recv_tcp_pbuf", "group__netconn__tcp.html#ga6893cb7648733d1f05696bac94e10490", null ],
[ "netconn_recv_tcp_pbuf_flags", "group__netconn__tcp.html#gabb8a242c445ef928c23258a2b2344294", null ],
[ "netconn_recv_udp_raw_netbuf", "api_8h.html#a805a90b546c5a149f04782351633979b", null ],
[ "netconn_recv_udp_raw_netbuf_flags", "api_8h.html#a505c3b8e400babf9681e09c945b7f421", null ],
[ "netconn_send", "group__netconn__udp.html#gac4d4d10153d47c80a783c34b27c66238", null ],
[ "netconn_sendto", "group__netconn__udp.html#ga8e1d852119bda1e1b602c2995282ef0c", null ],
[ "netconn_shutdown", "group__netconn__tcp.html#ga6ec6b2cf7b0f59e9371e38ae7dea2a63", null ],
[ "netconn_write_partly", "group__netconn__tcp.html#gacf9ce6f71652739d6be2ca83f7c423bf", null ],
[ "netconn_write_vectors_partly", "api_8h.html#a992b4fe8a855fd94861738f7260d0a32", null ]
];

View File

@ -0,0 +1,418 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/api/api_lib.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('api__lib_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">api_lib.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="api_8h.html">lwip/api.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="memp_8h.html">lwip/memp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ip_8h.html">lwip/ip.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="raw_8h.html">lwip/raw.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="udp_8h.html">lwip/udp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="api__msg_8h.html">lwip/priv/api_msg.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="tcp__priv_8h.html">lwip/priv/tcp_priv.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="tcpip__priv_8h.html">lwip/priv/tcpip_priv.h</a>&quot;</code><br />
<code>#include &quot;path/to/my/lwip_hooks.h&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ad0a0434e5ff08bb350740cb840e2aca8"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__lib_8c.html#ad0a0434e5ff08bb350740cb840e2aca8">netconn_new_with_proto_and_callback</a> (enum <a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a> t, u8_t proto, <a class="el" href="api_8h.html#a3e130339f00202b3ab714af502163a2d">netconn_callback</a> callback)</td></tr>
<tr class="separator:ad0a0434e5ff08bb350740cb840e2aca8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad5c079af0ad791a92fe9dade375744f0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gad5c079af0ad791a92fe9dade375744f0">netconn_prepare_delete</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn)</td></tr>
<tr class="separator:gad5c079af0ad791a92fe9dade375744f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab411221f912a6d9e4c82ac3963989403"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gab411221f912a6d9e4c82ac3963989403">netconn_delete</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn)</td></tr>
<tr class="separator:gab411221f912a6d9e4c82ac3963989403"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28430d1d86733f1bf98dc31305c42104"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__lib_8c.html#a28430d1d86733f1bf98dc31305c42104">netconn_getaddr</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *addr, u16_t *port, u8_t local)</td></tr>
<tr class="separator:a28430d1d86733f1bf98dc31305c42104"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga63bcc4d7bd150674fa953a1253fa6230"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#ga63bcc4d7bd150674fa953a1253fa6230">netconn_bind</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *addr, u16_t port)</td></tr>
<tr class="separator:ga63bcc4d7bd150674fa953a1253fa6230"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa78479deeedcecd3bacade387ac40cc5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gaa78479deeedcecd3bacade387ac40cc5">netconn_bind_if</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, u8_t if_idx)</td></tr>
<tr class="separator:gaa78479deeedcecd3bacade387ac40cc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacba7f74d973872ad0b88b9a96098cf77"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gacba7f74d973872ad0b88b9a96098cf77">netconn_connect</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *addr, u16_t port)</td></tr>
<tr class="separator:gacba7f74d973872ad0b88b9a96098cf77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga90bb4c4d1af6602a655b78fce0520402"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__udp.html#ga90bb4c4d1af6602a655b78fce0520402">netconn_disconnect</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn)</td></tr>
<tr class="separator:ga90bb4c4d1af6602a655b78fce0520402"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga84333ba8e7cdf45558d2b4795f53265d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#ga84333ba8e7cdf45558d2b4795f53265d">netconn_listen_with_backlog</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, u8_t backlog)</td></tr>
<tr class="separator:ga84333ba8e7cdf45558d2b4795f53265d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga13593148f60f7bbc6a505b567f175d69"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#ga13593148f60f7bbc6a505b567f175d69">netconn_accept</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetconn.html">netconn</a> **new_conn)</td></tr>
<tr class="separator:ga13593148f60f7bbc6a505b567f175d69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6893cb7648733d1f05696bac94e10490"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#ga6893cb7648733d1f05696bac94e10490">netconn_recv_tcp_pbuf</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structpbuf.html">pbuf</a> **new_buf)</td></tr>
<tr class="separator:ga6893cb7648733d1f05696bac94e10490"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabb8a242c445ef928c23258a2b2344294"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#gabb8a242c445ef928c23258a2b2344294">netconn_recv_tcp_pbuf_flags</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structpbuf.html">pbuf</a> **new_buf, u8_t apiflags)</td></tr>
<tr class="separator:gabb8a242c445ef928c23258a2b2344294"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a805a90b546c5a149f04782351633979b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__lib_8c.html#a805a90b546c5a149f04782351633979b">netconn_recv_udp_raw_netbuf</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetbuf.html">netbuf</a> **new_buf)</td></tr>
<tr class="separator:a805a90b546c5a149f04782351633979b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a505c3b8e400babf9681e09c945b7f421"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__lib_8c.html#a505c3b8e400babf9681e09c945b7f421">netconn_recv_udp_raw_netbuf_flags</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetbuf.html">netbuf</a> **new_buf, u8_t apiflags)</td></tr>
<tr class="separator:a505c3b8e400babf9681e09c945b7f421"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga50490bab058f4e740798beffcf48cabf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#ga50490bab058f4e740798beffcf48cabf">netconn_recv</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetbuf.html">netbuf</a> **new_buf)</td></tr>
<tr class="separator:ga50490bab058f4e740798beffcf48cabf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8e1d852119bda1e1b602c2995282ef0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__udp.html#ga8e1d852119bda1e1b602c2995282ef0c">netconn_sendto</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetbuf.html">netbuf</a> *buf, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *addr, u16_t port)</td></tr>
<tr class="separator:ga8e1d852119bda1e1b602c2995282ef0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac4d4d10153d47c80a783c34b27c66238"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__udp.html#gac4d4d10153d47c80a783c34b27c66238">netconn_send</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetbuf.html">netbuf</a> *buf)</td></tr>
<tr class="separator:gac4d4d10153d47c80a783c34b27c66238"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacf9ce6f71652739d6be2ca83f7c423bf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#gacf9ce6f71652739d6be2ca83f7c423bf">netconn_write_partly</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, const void *dataptr, size_t size, u8_t apiflags, size_t *bytes_written)</td></tr>
<tr class="separator:gacf9ce6f71652739d6be2ca83f7c423bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a992b4fe8a855fd94861738f7260d0a32"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__lib_8c.html#a992b4fe8a855fd94861738f7260d0a32">netconn_write_vectors_partly</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, struct <a class="el" href="structnetvector.html">netvector</a> *vectors, u16_t vectorcnt, u8_t apiflags, size_t *bytes_written)</td></tr>
<tr class="separator:a992b4fe8a855fd94861738f7260d0a32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga25bb1c1c9928f91f53149a026e2e2624"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#ga25bb1c1c9928f91f53149a026e2e2624">netconn_close</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn)</td></tr>
<tr class="separator:ga25bb1c1c9928f91f53149a026e2e2624"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab9eccae90351eb6c3d2ca690068445d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gab9eccae90351eb6c3d2ca690068445d4">netconn_err</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn)</td></tr>
<tr class="separator:gab9eccae90351eb6c3d2ca690068445d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6ec6b2cf7b0f59e9371e38ae7dea2a63"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__tcp.html#ga6ec6b2cf7b0f59e9371e38ae7dea2a63">netconn_shutdown</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, u8_t shut_rx, u8_t shut_tx)</td></tr>
<tr class="separator:ga6ec6b2cf7b0f59e9371e38ae7dea2a63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaaf2f92eeb38dca70b3e6ad98c3c45ed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__udp.html#gaaaf2f92eeb38dca70b3e6ad98c3c45ed">netconn_join_leave_group</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *multiaddr, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *netif_addr, enum <a class="el" href="api_8h.html#a5c6ded2c082de1536019b197a0a912db">netconn_igmp</a> join_or_leave)</td></tr>
<tr class="separator:gaaaf2f92eeb38dca70b3e6ad98c3c45ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5db2a1cf06a5fbb36f433e637da8729b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__udp.html#ga5db2a1cf06a5fbb36f433e637da8729b">netconn_join_leave_group_netif</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *multiaddr, u8_t if_idx, enum <a class="el" href="api_8h.html#a5c6ded2c082de1536019b197a0a912db">netconn_igmp</a> join_or_leave)</td></tr>
<tr class="separator:ga5db2a1cf06a5fbb36f433e637da8729b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafb3494b149dff96ed8d1acb770ab52f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__netconn__common.html#gafb3494b149dff96ed8d1acb770ab52f5">netconn_gethostbyname_addrtype</a> (const char *name, <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *addr, u8_t dns_addrtype)</td></tr>
<tr class="separator:gafb3494b149dff96ed8d1acb770ab52f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Sequential API External module </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a28430d1d86733f1bf98dc31305c42104"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28430d1d86733f1bf98dc31305c42104">&#9670;&nbsp;</a></span>netconn_getaddr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> netconn_getaddr </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td>
<td class="paramname"><em>conn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *&#160;</td>
<td class="paramname"><em>addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16_t *&#160;</td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>local</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the local or remote IP address and port of a netconn. For RAW netconns, this returns the protocol instead of a port!</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">conn</td><td>the netconn to query </td></tr>
<tr><td class="paramname">addr</td><td>a pointer to which to save the IP address </td></tr>
<tr><td class="paramname">port</td><td>a pointer to which to save the port (or protocol for RAW) </td></tr>
<tr><td class="paramname">local</td><td>1 to get the local IP address, 0 to get the remote one </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ERR_CONN for invalid connections ERR_OK if the information was retrieved </dd></dl>
</div>
</div>
<a id="ad0a0434e5ff08bb350740cb840e2aca8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0a0434e5ff08bb350740cb840e2aca8">&#9670;&nbsp;</a></span>netconn_new_with_proto_and_callback()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structnetconn.html">netconn</a>* netconn_new_with_proto_and_callback </td>
<td>(</td>
<td class="paramtype">enum <a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a>&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>proto</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="api_8h.html#a3e130339f00202b3ab714af502163a2d">netconn_callback</a>&#160;</td>
<td class="paramname"><em>callback</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new netconn (of a specific type) that has a callback function. The corresponding pcb is also created.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>the type of 'connection' to create (</td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd>enum <a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a>) </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">proto</td><td>the IP protocol for RAW IP pcbs </td></tr>
<tr><td class="paramname">callback</td><td>a function to call on status changes (RX available, TX'ed) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a newly allocated struct netconn or NULL on memory error </dd></dl>
</div>
</div>
<a id="a805a90b546c5a149f04782351633979b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a805a90b546c5a149f04782351633979b">&#9670;&nbsp;</a></span>netconn_recv_udp_raw_netbuf()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> netconn_recv_udp_raw_netbuf </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td>
<td class="paramname"><em>conn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structnetbuf.html">netbuf</a> **&#160;</td>
<td class="paramname"><em>new_buf</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Receive data (in form of a netbuf) from a UDP or RAW netconn</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">conn</td><td>the netconn from which to receive data </td></tr>
<tr><td class="paramname">new_buf</td><td>pointer where a new netbuf is stored when received data </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ERR_OK if data has been received, an error code otherwise (timeout, memory error or another error) ERR_ARG if conn is not a UDP/RAW netconn </dd></dl>
</div>
</div>
<a id="a505c3b8e400babf9681e09c945b7f421"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a505c3b8e400babf9681e09c945b7f421">&#9670;&nbsp;</a></span>netconn_recv_udp_raw_netbuf_flags()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> netconn_recv_udp_raw_netbuf_flags </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td>
<td class="paramname"><em>conn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structnetbuf.html">netbuf</a> **&#160;</td>
<td class="paramname"><em>new_buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>apiflags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Receive data (in form of a netbuf) from a UDP or RAW netconn</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">conn</td><td>the netconn from which to receive data </td></tr>
<tr><td class="paramname">new_buf</td><td>pointer where a new netbuf is stored when received data </td></tr>
<tr><td class="paramname">apiflags</td><td>flags that control function behaviour. For now only:<ul>
<li>NETCONN_DONTBLOCK: only read data that is available now, don't wait for more data </li>
</ul>
</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ERR_OK if data has been received, an error code otherwise (timeout, memory error or another error) ERR_ARG if conn is not a UDP/RAW netconn </dd></dl>
</div>
</div>
<a id="a992b4fe8a855fd94861738f7260d0a32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a992b4fe8a855fd94861738f7260d0a32">&#9670;&nbsp;</a></span>netconn_write_vectors_partly()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> netconn_write_vectors_partly </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td>
<td class="paramname"><em>conn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structnetvector.html">netvector</a> *&#160;</td>
<td class="paramname"><em>vectors</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u16_t&#160;</td>
<td class="paramname"><em>vectorcnt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>apiflags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *&#160;</td>
<td class="paramname"><em>bytes_written</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send vectorized data atomically over a TCP netconn.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">conn</td><td>the TCP netconn over which to send data </td></tr>
<tr><td class="paramname">vectors</td><td>array of vectors containing data to send </td></tr>
<tr><td class="paramname">vectorcnt</td><td>number of vectors in the array </td></tr>
<tr><td class="paramname">apiflags</td><td>combination of following flags :<ul>
<li>NETCONN_COPY: data will be copied into memory belonging to the stack</li>
<li>NETCONN_MORE: for TCP connection, PSH flag will be set on last segment sent</li>
<li>NETCONN_DONTBLOCK: only write the data if all data can be written at once </li>
</ul>
</td></tr>
<tr><td class="paramname">bytes_written</td><td>pointer to a location that receives the number of written bytes </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ERR_OK if data was sent, any other err_t on error </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_da61e3e9a357748887e3ca8d7c5a0c16.html">api</a></li><li class="navelem"><a class="el" href="api__lib_8c.html">api_lib.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,28 @@
var api__lib_8c =
[
[ "netconn_accept", "group__netconn__tcp.html#ga13593148f60f7bbc6a505b567f175d69", null ],
[ "netconn_bind", "group__netconn__common.html#ga63bcc4d7bd150674fa953a1253fa6230", null ],
[ "netconn_bind_if", "group__netconn__common.html#gaa78479deeedcecd3bacade387ac40cc5", null ],
[ "netconn_close", "group__netconn__tcp.html#ga25bb1c1c9928f91f53149a026e2e2624", null ],
[ "netconn_connect", "group__netconn__common.html#gacba7f74d973872ad0b88b9a96098cf77", null ],
[ "netconn_delete", "group__netconn__common.html#gab411221f912a6d9e4c82ac3963989403", null ],
[ "netconn_disconnect", "group__netconn__udp.html#ga90bb4c4d1af6602a655b78fce0520402", null ],
[ "netconn_err", "group__netconn__common.html#gab9eccae90351eb6c3d2ca690068445d4", null ],
[ "netconn_getaddr", "api__lib_8c.html#a28430d1d86733f1bf98dc31305c42104", null ],
[ "netconn_gethostbyname_addrtype", "group__netconn__common.html#gafb3494b149dff96ed8d1acb770ab52f5", null ],
[ "netconn_join_leave_group", "group__netconn__udp.html#gaaaf2f92eeb38dca70b3e6ad98c3c45ed", null ],
[ "netconn_join_leave_group_netif", "group__netconn__udp.html#ga5db2a1cf06a5fbb36f433e637da8729b", null ],
[ "netconn_listen_with_backlog", "group__netconn__tcp.html#ga84333ba8e7cdf45558d2b4795f53265d", null ],
[ "netconn_new_with_proto_and_callback", "api__lib_8c.html#ad0a0434e5ff08bb350740cb840e2aca8", null ],
[ "netconn_prepare_delete", "group__netconn__common.html#gad5c079af0ad791a92fe9dade375744f0", null ],
[ "netconn_recv", "group__netconn__common.html#ga50490bab058f4e740798beffcf48cabf", null ],
[ "netconn_recv_tcp_pbuf", "group__netconn__tcp.html#ga6893cb7648733d1f05696bac94e10490", null ],
[ "netconn_recv_tcp_pbuf_flags", "group__netconn__tcp.html#gabb8a242c445ef928c23258a2b2344294", null ],
[ "netconn_recv_udp_raw_netbuf", "api__lib_8c.html#a805a90b546c5a149f04782351633979b", null ],
[ "netconn_recv_udp_raw_netbuf_flags", "api__lib_8c.html#a505c3b8e400babf9681e09c945b7f421", null ],
[ "netconn_send", "group__netconn__udp.html#gac4d4d10153d47c80a783c34b27c66238", null ],
[ "netconn_sendto", "group__netconn__udp.html#ga8e1d852119bda1e1b602c2995282ef0c", null ],
[ "netconn_shutdown", "group__netconn__tcp.html#ga6ec6b2cf7b0f59e9371e38ae7dea2a63", null ],
[ "netconn_write_partly", "group__netconn__tcp.html#gacf9ce6f71652739d6be2ca83f7c423bf", null ],
[ "netconn_write_vectors_partly", "api__lib_8c.html#a992b4fe8a855fd94861738f7260d0a32", null ]
];

View File

@ -0,0 +1,626 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/api/api_msg.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('api__msg_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">api_msg.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="api__msg_8h.html">lwip/priv/api_msg.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ip_8h.html">lwip/ip.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ip__addr_8h.html">lwip/ip_addr.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="udp_8h.html">lwip/udp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="tcp_8h.html">lwip/tcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="raw_8h.html">lwip/raw.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="memp_8h.html">lwip/memp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="igmp_8h.html">lwip/igmp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="dns_8h.html">lwip/dns.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="mld6_8h.html">lwip/mld6.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="tcpip__priv_8h.html">lwip/priv/tcpip_priv.h</a>&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:abc6e1a4f8dd4640ab00eae4bbfdb7236"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#abc6e1a4f8dd4640ab00eae4bbfdb7236">lwip_netconn_do_newconn</a> (void *m)</td></tr>
<tr class="separator:abc6e1a4f8dd4640ab00eae4bbfdb7236"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a919865fa64270a3e4cb719ddff2fead9"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#a919865fa64270a3e4cb719ddff2fead9">netconn_alloc</a> (enum <a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a> t, <a class="el" href="api_8h.html#a3e130339f00202b3ab714af502163a2d">netconn_callback</a> callback)</td></tr>
<tr class="separator:a919865fa64270a3e4cb719ddff2fead9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a875b82ad129bdec1c6f2c21cbeedc48b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#a875b82ad129bdec1c6f2c21cbeedc48b">netconn_free</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn)</td></tr>
<tr class="separator:a875b82ad129bdec1c6f2c21cbeedc48b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e77da8492e93d570bc1ec37f3c91d59"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#a9e77da8492e93d570bc1ec37f3c91d59">lwip_netconn_do_delconn</a> (void *m)</td></tr>
<tr class="separator:a9e77da8492e93d570bc1ec37f3c91d59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8e265922cda9f7fd54bf39e4ecf3768"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#aa8e265922cda9f7fd54bf39e4ecf3768">lwip_netconn_do_bind</a> (void *m)</td></tr>
<tr class="separator:aa8e265922cda9f7fd54bf39e4ecf3768"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4fed475f06818552ffefc8a1eda6605"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#af4fed475f06818552ffefc8a1eda6605">lwip_netconn_do_bind_if</a> (void *m)</td></tr>
<tr class="separator:af4fed475f06818552ffefc8a1eda6605"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f18f57eeda7b0596110930e696f9902"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#a6f18f57eeda7b0596110930e696f9902">lwip_netconn_do_connect</a> (void *m)</td></tr>
<tr class="separator:a6f18f57eeda7b0596110930e696f9902"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adec8a5ddbcbdacba099c630c8310d34a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#adec8a5ddbcbdacba099c630c8310d34a">lwip_netconn_do_disconnect</a> (void *m)</td></tr>
<tr class="separator:adec8a5ddbcbdacba099c630c8310d34a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7d753d86818bfd77c1d73dab8dc943f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#aa7d753d86818bfd77c1d73dab8dc943f">lwip_netconn_do_listen</a> (void *m)</td></tr>
<tr class="separator:aa7d753d86818bfd77c1d73dab8dc943f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac714bdd3d57e34f0a6517a469d80df6c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#ac714bdd3d57e34f0a6517a469d80df6c">lwip_netconn_do_send</a> (void *m)</td></tr>
<tr class="separator:ac714bdd3d57e34f0a6517a469d80df6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6ae6036baf5c8fef22228ceb5e3ff9f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#ab6ae6036baf5c8fef22228ceb5e3ff9f">lwip_netconn_do_recv</a> (void *m)</td></tr>
<tr class="separator:ab6ae6036baf5c8fef22228ceb5e3ff9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc455a5f63fa3bc85022e34861a2fea5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#afc455a5f63fa3bc85022e34861a2fea5">lwip_netconn_do_accepted</a> (void *m)</td></tr>
<tr class="separator:afc455a5f63fa3bc85022e34861a2fea5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca4545a471ead1bc673ea93fe85f7e5c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#aca4545a471ead1bc673ea93fe85f7e5c">lwip_netconn_do_write</a> (void *m)</td></tr>
<tr class="separator:aca4545a471ead1bc673ea93fe85f7e5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af33f432db6e3f111d4ee5876089e4163"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#af33f432db6e3f111d4ee5876089e4163">lwip_netconn_do_getaddr</a> (void *m)</td></tr>
<tr class="separator:af33f432db6e3f111d4ee5876089e4163"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff73e0fcdc13c7cb97a4bfbd71a4347d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#aff73e0fcdc13c7cb97a4bfbd71a4347d">lwip_netconn_do_close</a> (void *m)</td></tr>
<tr class="separator:aff73e0fcdc13c7cb97a4bfbd71a4347d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7402b52416828906a5679828cce37546"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#a7402b52416828906a5679828cce37546">lwip_netconn_do_join_leave_group</a> (void *m)</td></tr>
<tr class="separator:a7402b52416828906a5679828cce37546"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aacc47257c0a5aa5eb107da0cfc699722"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#aacc47257c0a5aa5eb107da0cfc699722">lwip_netconn_do_join_leave_group_netif</a> (void *m)</td></tr>
<tr class="separator:aacc47257c0a5aa5eb107da0cfc699722"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd3802b2f12e27928ccc0f759b887d61"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8c.html#afd3802b2f12e27928ccc0f759b887d61">lwip_netconn_do_gethostbyname</a> (void *arg)</td></tr>
<tr class="separator:afd3802b2f12e27928ccc0f759b887d61"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Sequential API Internal module </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="afc455a5f63fa3bc85022e34861a2fea5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc455a5f63fa3bc85022e34861a2fea5">&#9670;&nbsp;</a></span>lwip_netconn_do_accepted()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_accepted </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Indicate that a TCP pcb has been accepted Called from netconn_accept</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aa8e265922cda9f7fd54bf39e4ecf3768"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8e265922cda9f7fd54bf39e4ecf3768">&#9670;&nbsp;</a></span>lwip_netconn_do_bind()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_bind </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Bind a pcb contained in a netconn Called from netconn_bind.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection and containing the IP address and port to bind to </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af4fed475f06818552ffefc8a1eda6605"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4fed475f06818552ffefc8a1eda6605">&#9670;&nbsp;</a></span>lwip_netconn_do_bind_if()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_bind_if </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Bind a pcb contained in a netconn to an interface Called from netconn_bind_if.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection and containing the IP address and port to bind to </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aff73e0fcdc13c7cb97a4bfbd71a4347d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff73e0fcdc13c7cb97a4bfbd71a4347d">&#9670;&nbsp;</a></span>lwip_netconn_do_close()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_close </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Close or half-shutdown a TCP pcb contained in a netconn Called from netconn_close In contrast to closing sockets, the netconn is not deallocated.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a6f18f57eeda7b0596110930e696f9902"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f18f57eeda7b0596110930e696f9902">&#9670;&nbsp;</a></span>lwip_netconn_do_connect()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_connect </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Connect a pcb contained inside a netconn Called from netconn_connect.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection and containing the IP address and port to connect to </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a9e77da8492e93d570bc1ec37f3c91d59"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e77da8492e93d570bc1ec37f3c91d59">&#9670;&nbsp;</a></span>lwip_netconn_do_delconn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_delconn </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete the pcb inside a netconn. Called from netconn_delete.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="adec8a5ddbcbdacba099c630c8310d34a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adec8a5ddbcbdacba099c630c8310d34a">&#9670;&nbsp;</a></span>lwip_netconn_do_disconnect()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_disconnect </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Disconnect a pcb contained inside a netconn Only used for UDP netconns. Called from netconn_disconnect.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection to disconnect </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af33f432db6e3f111d4ee5876089e4163"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af33f432db6e3f111d4ee5876089e4163">&#9670;&nbsp;</a></span>lwip_netconn_do_getaddr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_getaddr </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return a connection's local or remote address Called from netconn_getaddr</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="afd3802b2f12e27928ccc0f759b887d61"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd3802b2f12e27928ccc0f759b887d61">&#9670;&nbsp;</a></span>lwip_netconn_do_gethostbyname()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_gethostbyname </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>arg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Execute a DNS query Called from netconn_gethostbyname</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arg</td><td>the <a class="el" href="structdns__api__msg.html">dns_api_msg</a> pointing to the query </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a7402b52416828906a5679828cce37546"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7402b52416828906a5679828cce37546">&#9670;&nbsp;</a></span>lwip_netconn_do_join_leave_group()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_join_leave_group </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Join multicast groups for UDP netconns. Called from netconn_join_leave_group</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aacc47257c0a5aa5eb107da0cfc699722"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aacc47257c0a5aa5eb107da0cfc699722">&#9670;&nbsp;</a></span>lwip_netconn_do_join_leave_group_netif()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_join_leave_group_netif </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Join multicast groups for UDP netconns. Called from netconn_join_leave_group_netif</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aa7d753d86818bfd77c1d73dab8dc943f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7d753d86818bfd77c1d73dab8dc943f">&#9670;&nbsp;</a></span>lwip_netconn_do_listen()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_listen </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set a TCP pcb contained in a netconn into listen mode Called from netconn_listen.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abc6e1a4f8dd4640ab00eae4bbfdb7236"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc6e1a4f8dd4640ab00eae4bbfdb7236">&#9670;&nbsp;</a></span>lwip_netconn_do_newconn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_newconn </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new pcb of a specific type inside a netconn. Called from netconn_new_with_proto_and_callback.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> describing the connection type </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ab6ae6036baf5c8fef22228ceb5e3ff9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6ae6036baf5c8fef22228ceb5e3ff9f">&#9670;&nbsp;</a></span>lwip_netconn_do_recv()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_recv </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Indicate data has been received from a TCP pcb contained in a netconn Called from netconn_recv</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac714bdd3d57e34f0a6517a469d80df6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac714bdd3d57e34f0a6517a469d80df6c">&#9670;&nbsp;</a></span>lwip_netconn_do_send()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_send </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send some data on a RAW or UDP pcb contained in a netconn Called from netconn_send</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aca4545a471ead1bc673ea93fe85f7e5c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca4545a471ead1bc673ea93fe85f7e5c">&#9670;&nbsp;</a></span>lwip_netconn_do_write()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_write </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send some data on a TCP pcb contained in a netconn Called from netconn_write</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a919865fa64270a3e4cb719ddff2fead9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a919865fa64270a3e4cb719ddff2fead9">&#9670;&nbsp;</a></span>netconn_alloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structnetconn.html">netconn</a>* netconn_alloc </td>
<td>(</td>
<td class="paramtype">enum <a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a>&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="api_8h.html#a3e130339f00202b3ab714af502163a2d">netconn_callback</a>&#160;</td>
<td class="paramname"><em>callback</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new netconn (of a specific type) that has a callback function. The corresponding pcb is NOT created!</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>the type of 'connection' to create (</td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd>enum <a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a>) </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">callback</td><td>a function to call on status changes (RX available, TX'ed) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a newly allocated struct netconn or NULL on memory error </dd></dl>
</div>
</div>
<a id="a875b82ad129bdec1c6f2c21cbeedc48b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a875b82ad129bdec1c6f2c21cbeedc48b">&#9670;&nbsp;</a></span>netconn_free()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void netconn_free </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td>
<td class="paramname"><em>conn</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete a netconn and all its resources. The pcb is NOT freed (since we might not be in the right thread context do this).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">conn</td><td>the netconn to free </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_da61e3e9a357748887e3ca8d7c5a0c16.html">api</a></li><li class="navelem"><a class="el" href="api__msg_8c.html">api_msg.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,21 @@
var api__msg_8c =
[
[ "lwip_netconn_do_accepted", "api__msg_8c.html#afc455a5f63fa3bc85022e34861a2fea5", null ],
[ "lwip_netconn_do_bind", "api__msg_8c.html#aa8e265922cda9f7fd54bf39e4ecf3768", null ],
[ "lwip_netconn_do_bind_if", "api__msg_8c.html#af4fed475f06818552ffefc8a1eda6605", null ],
[ "lwip_netconn_do_close", "api__msg_8c.html#aff73e0fcdc13c7cb97a4bfbd71a4347d", null ],
[ "lwip_netconn_do_connect", "api__msg_8c.html#a6f18f57eeda7b0596110930e696f9902", null ],
[ "lwip_netconn_do_delconn", "api__msg_8c.html#a9e77da8492e93d570bc1ec37f3c91d59", null ],
[ "lwip_netconn_do_disconnect", "api__msg_8c.html#adec8a5ddbcbdacba099c630c8310d34a", null ],
[ "lwip_netconn_do_getaddr", "api__msg_8c.html#af33f432db6e3f111d4ee5876089e4163", null ],
[ "lwip_netconn_do_gethostbyname", "api__msg_8c.html#afd3802b2f12e27928ccc0f759b887d61", null ],
[ "lwip_netconn_do_join_leave_group", "api__msg_8c.html#a7402b52416828906a5679828cce37546", null ],
[ "lwip_netconn_do_join_leave_group_netif", "api__msg_8c.html#aacc47257c0a5aa5eb107da0cfc699722", null ],
[ "lwip_netconn_do_listen", "api__msg_8c.html#aa7d753d86818bfd77c1d73dab8dc943f", null ],
[ "lwip_netconn_do_newconn", "api__msg_8c.html#abc6e1a4f8dd4640ab00eae4bbfdb7236", null ],
[ "lwip_netconn_do_recv", "api__msg_8c.html#ab6ae6036baf5c8fef22228ceb5e3ff9f", null ],
[ "lwip_netconn_do_send", "api__msg_8c.html#ac714bdd3d57e34f0a6517a469d80df6c", null ],
[ "lwip_netconn_do_write", "api__msg_8c.html#aca4545a471ead1bc673ea93fe85f7e5c", null ],
[ "netconn_alloc", "api__msg_8c.html#a919865fa64270a3e4cb719ddff2fead9", null ],
[ "netconn_free", "api__msg_8c.html#a875b82ad129bdec1c6f2c21cbeedc48b", null ]
];

View File

@ -0,0 +1,629 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/priv/api_msg.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('api__msg_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">api_msg.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="arch_8h.html">lwip/arch.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ip__addr_8h.html">lwip/ip_addr.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="err_8h.html">lwip/err.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="sys_8h.html">lwip/sys.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="igmp_8h.html">lwip/igmp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="api_8h.html">lwip/api.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="tcpip__priv_8h.html">lwip/priv/tcpip_priv.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structapi__msg.html">api_msg</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdns__api__msg.html">dns_api_msg</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:abc6e1a4f8dd4640ab00eae4bbfdb7236"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#abc6e1a4f8dd4640ab00eae4bbfdb7236">lwip_netconn_do_newconn</a> (void *m)</td></tr>
<tr class="separator:abc6e1a4f8dd4640ab00eae4bbfdb7236"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e77da8492e93d570bc1ec37f3c91d59"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#a9e77da8492e93d570bc1ec37f3c91d59">lwip_netconn_do_delconn</a> (void *m)</td></tr>
<tr class="separator:a9e77da8492e93d570bc1ec37f3c91d59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8e265922cda9f7fd54bf39e4ecf3768"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#aa8e265922cda9f7fd54bf39e4ecf3768">lwip_netconn_do_bind</a> (void *m)</td></tr>
<tr class="separator:aa8e265922cda9f7fd54bf39e4ecf3768"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4fed475f06818552ffefc8a1eda6605"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#af4fed475f06818552ffefc8a1eda6605">lwip_netconn_do_bind_if</a> (void *m)</td></tr>
<tr class="separator:af4fed475f06818552ffefc8a1eda6605"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f18f57eeda7b0596110930e696f9902"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#a6f18f57eeda7b0596110930e696f9902">lwip_netconn_do_connect</a> (void *m)</td></tr>
<tr class="separator:a6f18f57eeda7b0596110930e696f9902"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adec8a5ddbcbdacba099c630c8310d34a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#adec8a5ddbcbdacba099c630c8310d34a">lwip_netconn_do_disconnect</a> (void *m)</td></tr>
<tr class="separator:adec8a5ddbcbdacba099c630c8310d34a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7d753d86818bfd77c1d73dab8dc943f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#aa7d753d86818bfd77c1d73dab8dc943f">lwip_netconn_do_listen</a> (void *m)</td></tr>
<tr class="separator:aa7d753d86818bfd77c1d73dab8dc943f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac714bdd3d57e34f0a6517a469d80df6c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#ac714bdd3d57e34f0a6517a469d80df6c">lwip_netconn_do_send</a> (void *m)</td></tr>
<tr class="separator:ac714bdd3d57e34f0a6517a469d80df6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6ae6036baf5c8fef22228ceb5e3ff9f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#ab6ae6036baf5c8fef22228ceb5e3ff9f">lwip_netconn_do_recv</a> (void *m)</td></tr>
<tr class="separator:ab6ae6036baf5c8fef22228ceb5e3ff9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc455a5f63fa3bc85022e34861a2fea5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#afc455a5f63fa3bc85022e34861a2fea5">lwip_netconn_do_accepted</a> (void *m)</td></tr>
<tr class="separator:afc455a5f63fa3bc85022e34861a2fea5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca4545a471ead1bc673ea93fe85f7e5c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#aca4545a471ead1bc673ea93fe85f7e5c">lwip_netconn_do_write</a> (void *m)</td></tr>
<tr class="separator:aca4545a471ead1bc673ea93fe85f7e5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af33f432db6e3f111d4ee5876089e4163"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#af33f432db6e3f111d4ee5876089e4163">lwip_netconn_do_getaddr</a> (void *m)</td></tr>
<tr class="separator:af33f432db6e3f111d4ee5876089e4163"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff73e0fcdc13c7cb97a4bfbd71a4347d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#aff73e0fcdc13c7cb97a4bfbd71a4347d">lwip_netconn_do_close</a> (void *m)</td></tr>
<tr class="separator:aff73e0fcdc13c7cb97a4bfbd71a4347d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7402b52416828906a5679828cce37546"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#a7402b52416828906a5679828cce37546">lwip_netconn_do_join_leave_group</a> (void *m)</td></tr>
<tr class="separator:a7402b52416828906a5679828cce37546"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aacc47257c0a5aa5eb107da0cfc699722"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#aacc47257c0a5aa5eb107da0cfc699722">lwip_netconn_do_join_leave_group_netif</a> (void *m)</td></tr>
<tr class="separator:aacc47257c0a5aa5eb107da0cfc699722"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd3802b2f12e27928ccc0f759b887d61"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#afd3802b2f12e27928ccc0f759b887d61">lwip_netconn_do_gethostbyname</a> (void *arg)</td></tr>
<tr class="separator:afd3802b2f12e27928ccc0f759b887d61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a919865fa64270a3e4cb719ddff2fead9"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#a919865fa64270a3e4cb719ddff2fead9">netconn_alloc</a> (enum <a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a> t, <a class="el" href="api_8h.html#a3e130339f00202b3ab714af502163a2d">netconn_callback</a> callback)</td></tr>
<tr class="separator:a919865fa64270a3e4cb719ddff2fead9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a875b82ad129bdec1c6f2c21cbeedc48b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="api__msg_8h.html#a875b82ad129bdec1c6f2c21cbeedc48b">netconn_free</a> (struct <a class="el" href="structnetconn.html">netconn</a> *conn)</td></tr>
<tr class="separator:a875b82ad129bdec1c6f2c21cbeedc48b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>netconn API lwIP internal implementations (do not use in application code) </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="afc455a5f63fa3bc85022e34861a2fea5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc455a5f63fa3bc85022e34861a2fea5">&#9670;&nbsp;</a></span>lwip_netconn_do_accepted()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_accepted </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Indicate that a TCP pcb has been accepted Called from netconn_accept</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aa8e265922cda9f7fd54bf39e4ecf3768"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8e265922cda9f7fd54bf39e4ecf3768">&#9670;&nbsp;</a></span>lwip_netconn_do_bind()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_bind </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Bind a pcb contained in a netconn Called from netconn_bind.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection and containing the IP address and port to bind to </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af4fed475f06818552ffefc8a1eda6605"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4fed475f06818552ffefc8a1eda6605">&#9670;&nbsp;</a></span>lwip_netconn_do_bind_if()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_bind_if </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Bind a pcb contained in a netconn to an interface Called from netconn_bind_if.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection and containing the IP address and port to bind to </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aff73e0fcdc13c7cb97a4bfbd71a4347d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff73e0fcdc13c7cb97a4bfbd71a4347d">&#9670;&nbsp;</a></span>lwip_netconn_do_close()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_close </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Close or half-shutdown a TCP pcb contained in a netconn Called from netconn_close In contrast to closing sockets, the netconn is not deallocated.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a6f18f57eeda7b0596110930e696f9902"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f18f57eeda7b0596110930e696f9902">&#9670;&nbsp;</a></span>lwip_netconn_do_connect()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_connect </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Connect a pcb contained inside a netconn Called from netconn_connect.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection and containing the IP address and port to connect to </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a9e77da8492e93d570bc1ec37f3c91d59"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e77da8492e93d570bc1ec37f3c91d59">&#9670;&nbsp;</a></span>lwip_netconn_do_delconn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_delconn </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete the pcb inside a netconn. Called from netconn_delete.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="adec8a5ddbcbdacba099c630c8310d34a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adec8a5ddbcbdacba099c630c8310d34a">&#9670;&nbsp;</a></span>lwip_netconn_do_disconnect()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_disconnect </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Disconnect a pcb contained inside a netconn Only used for UDP netconns. Called from netconn_disconnect.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection to disconnect </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af33f432db6e3f111d4ee5876089e4163"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af33f432db6e3f111d4ee5876089e4163">&#9670;&nbsp;</a></span>lwip_netconn_do_getaddr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_getaddr </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return a connection's local or remote address Called from netconn_getaddr</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="afd3802b2f12e27928ccc0f759b887d61"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd3802b2f12e27928ccc0f759b887d61">&#9670;&nbsp;</a></span>lwip_netconn_do_gethostbyname()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_gethostbyname </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>arg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Execute a DNS query Called from netconn_gethostbyname</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arg</td><td>the <a class="el" href="structdns__api__msg.html">dns_api_msg</a> pointing to the query </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a7402b52416828906a5679828cce37546"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7402b52416828906a5679828cce37546">&#9670;&nbsp;</a></span>lwip_netconn_do_join_leave_group()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_join_leave_group </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Join multicast groups for UDP netconns. Called from netconn_join_leave_group</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aacc47257c0a5aa5eb107da0cfc699722"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aacc47257c0a5aa5eb107da0cfc699722">&#9670;&nbsp;</a></span>lwip_netconn_do_join_leave_group_netif()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_join_leave_group_netif </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Join multicast groups for UDP netconns. Called from netconn_join_leave_group_netif</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aa7d753d86818bfd77c1d73dab8dc943f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7d753d86818bfd77c1d73dab8dc943f">&#9670;&nbsp;</a></span>lwip_netconn_do_listen()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_listen </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set a TCP pcb contained in a netconn into listen mode Called from netconn_listen.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="abc6e1a4f8dd4640ab00eae4bbfdb7236"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc6e1a4f8dd4640ab00eae4bbfdb7236">&#9670;&nbsp;</a></span>lwip_netconn_do_newconn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_newconn </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new pcb of a specific type inside a netconn. Called from netconn_new_with_proto_and_callback.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> describing the connection type </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ab6ae6036baf5c8fef22228ceb5e3ff9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6ae6036baf5c8fef22228ceb5e3ff9f">&#9670;&nbsp;</a></span>lwip_netconn_do_recv()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_recv </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Indicate data has been received from a TCP pcb contained in a netconn Called from netconn_recv</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac714bdd3d57e34f0a6517a469d80df6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac714bdd3d57e34f0a6517a469d80df6c">&#9670;&nbsp;</a></span>lwip_netconn_do_send()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_send </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send some data on a RAW or UDP pcb contained in a netconn Called from netconn_send</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aca4545a471ead1bc673ea93fe85f7e5c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca4545a471ead1bc673ea93fe85f7e5c">&#9670;&nbsp;</a></span>lwip_netconn_do_write()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void lwip_netconn_do_write </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>m</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send some data on a TCP pcb contained in a netconn Called from netconn_write</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">m</td><td>the <a class="el" href="structapi__msg.html">api_msg</a> pointing to the connection </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a919865fa64270a3e4cb719ddff2fead9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a919865fa64270a3e4cb719ddff2fead9">&#9670;&nbsp;</a></span>netconn_alloc()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structnetconn.html">netconn</a>* netconn_alloc </td>
<td>(</td>
<td class="paramtype">enum <a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a>&#160;</td>
<td class="paramname"><em>t</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="api_8h.html#a3e130339f00202b3ab714af502163a2d">netconn_callback</a>&#160;</td>
<td class="paramname"><em>callback</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new netconn (of a specific type) that has a callback function. The corresponding pcb is NOT created!</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t</td><td>the type of 'connection' to create (</td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd>enum <a class="el" href="group__netconn__common.html#gaaba260d28d105fb4bce9185fd0300d91">netconn_type</a>) </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">callback</td><td>a function to call on status changes (RX available, TX'ed) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a newly allocated struct netconn or NULL on memory error </dd></dl>
</div>
</div>
<a id="a875b82ad129bdec1c6f2c21cbeedc48b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a875b82ad129bdec1c6f2c21cbeedc48b">&#9670;&nbsp;</a></span>netconn_free()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void netconn_free </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetconn.html">netconn</a> *&#160;</td>
<td class="paramname"><em>conn</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Delete a netconn and all its resources. The pcb is NOT freed (since we might not be in the right thread context do this).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">conn</td><td>the netconn to free </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="dir_460c501b2432fc107adcb38111835e48.html">priv</a></li><li class="navelem"><a class="el" href="api__msg_8h.html">api_msg.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,23 @@
var api__msg_8h =
[
[ "api_msg", "structapi__msg.html", "structapi__msg" ],
[ "dns_api_msg", "structdns__api__msg.html", "structdns__api__msg" ],
[ "lwip_netconn_do_accepted", "api__msg_8h.html#afc455a5f63fa3bc85022e34861a2fea5", null ],
[ "lwip_netconn_do_bind", "api__msg_8h.html#aa8e265922cda9f7fd54bf39e4ecf3768", null ],
[ "lwip_netconn_do_bind_if", "api__msg_8h.html#af4fed475f06818552ffefc8a1eda6605", null ],
[ "lwip_netconn_do_close", "api__msg_8h.html#aff73e0fcdc13c7cb97a4bfbd71a4347d", null ],
[ "lwip_netconn_do_connect", "api__msg_8h.html#a6f18f57eeda7b0596110930e696f9902", null ],
[ "lwip_netconn_do_delconn", "api__msg_8h.html#a9e77da8492e93d570bc1ec37f3c91d59", null ],
[ "lwip_netconn_do_disconnect", "api__msg_8h.html#adec8a5ddbcbdacba099c630c8310d34a", null ],
[ "lwip_netconn_do_getaddr", "api__msg_8h.html#af33f432db6e3f111d4ee5876089e4163", null ],
[ "lwip_netconn_do_gethostbyname", "api__msg_8h.html#afd3802b2f12e27928ccc0f759b887d61", null ],
[ "lwip_netconn_do_join_leave_group", "api__msg_8h.html#a7402b52416828906a5679828cce37546", null ],
[ "lwip_netconn_do_join_leave_group_netif", "api__msg_8h.html#aacc47257c0a5aa5eb107da0cfc699722", null ],
[ "lwip_netconn_do_listen", "api__msg_8h.html#aa7d753d86818bfd77c1d73dab8dc943f", null ],
[ "lwip_netconn_do_newconn", "api__msg_8h.html#abc6e1a4f8dd4640ab00eae4bbfdb7236", null ],
[ "lwip_netconn_do_recv", "api__msg_8h.html#ab6ae6036baf5c8fef22228ceb5e3ff9f", null ],
[ "lwip_netconn_do_send", "api__msg_8h.html#ac714bdd3d57e34f0a6517a469d80df6c", null ],
[ "lwip_netconn_do_write", "api__msg_8h.html#aca4545a471ead1bc673ea93fe85f7e5c", null ],
[ "netconn_alloc", "api__msg_8h.html#a919865fa64270a3e4cb719ddff2fead9", null ],
[ "netconn_free", "api__msg_8h.html#a875b82ad129bdec1c6f2c21cbeedc48b", null ]
];

View File

@ -0,0 +1,281 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/apps/snmp.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('apps_2snmp_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">snmp.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="snmp__opts_8h.html">lwip/apps/snmp_opts.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="err_8h.html">lwip/err.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="snmp__core_8h.html">lwip/apps/snmp_core.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsnmp__varbind.html">snmp_varbind</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ae9310bbe1948b3c3bc64c073d4621019"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apps_2snmp_8h.html#ae9310bbe1948b3c3bc64c073d4621019">SNMP_GENTRAP_COLDSTART</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:ae9310bbe1948b3c3bc64c073d4621019"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a2e5824deab50e639b01181307a0926"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apps_2snmp_8h.html#a9a2e5824deab50e639b01181307a0926">SNMP_GENTRAP_WARMSTART</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:a9a2e5824deab50e639b01181307a0926"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1856efbe83199f456c34a4e5139dfb16"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apps_2snmp_8h.html#a1856efbe83199f456c34a4e5139dfb16">SNMP_GENTRAP_LINKDOWN</a>&#160;&#160;&#160;2</td></tr>
<tr class="separator:a1856efbe83199f456c34a4e5139dfb16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa665cdc02ccd5ee9fe0c4cb1b792186"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apps_2snmp_8h.html#afa665cdc02ccd5ee9fe0c4cb1b792186">SNMP_GENTRAP_LINKUP</a>&#160;&#160;&#160;3</td></tr>
<tr class="separator:afa665cdc02ccd5ee9fe0c4cb1b792186"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf312d8bdbeed2c02560321ab24a022f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apps_2snmp_8h.html#aaf312d8bdbeed2c02560321ab24a022f">SNMP_GENTRAP_AUTH_FAILURE</a>&#160;&#160;&#160;4</td></tr>
<tr class="separator:aaf312d8bdbeed2c02560321ab24a022f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1cd822650d9ac66d0333a5ad600cfee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apps_2snmp_8h.html#ac1cd822650d9ac66d0333a5ad600cfee">SNMP_GENTRAP_EGP_NEIGHBOR_LOSS</a>&#160;&#160;&#160;5</td></tr>
<tr class="separator:ac1cd822650d9ac66d0333a5ad600cfee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3691cecfa911baa52ccf6054022ba43"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apps_2snmp_8h.html#ab3691cecfa911baa52ccf6054022ba43">SNMP_GENTRAP_ENTERPRISE_SPECIFIC</a>&#160;&#160;&#160;6</td></tr>
<tr class="separator:ab3691cecfa911baa52ccf6054022ba43"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga4d88f2fc7655280384131d543e0d83e5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__core.html#ga4d88f2fc7655280384131d543e0d83e5">snmp_init</a> (void)</td></tr>
<tr class="separator:ga4d88f2fc7655280384131d543e0d83e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga29c76474971f25d038fd486447c70e21"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__core.html#ga29c76474971f25d038fd486447c70e21">snmp_set_mibs</a> (const struct <a class="el" href="structsnmp__mib.html">snmp_mib</a> **mibs, u8_t num_mibs)</td></tr>
<tr class="separator:ga29c76474971f25d038fd486447c70e21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacc71ac857bf9215f06a624dda09abe3a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__core.html#gacc71ac857bf9215f06a624dda09abe3a">snmp_set_device_enterprise_oid</a> (const struct <a class="el" href="structsnmp__obj__id.html">snmp_obj_id</a> *device_enterprise_oid)</td></tr>
<tr class="separator:gacc71ac857bf9215f06a624dda09abe3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4dff82dda2553b9554a9f98561852a50"><td class="memItemLeft" align="right" valign="top">const struct <a class="el" href="structsnmp__obj__id.html">snmp_obj_id</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__core.html#ga4dff82dda2553b9554a9f98561852a50">snmp_get_device_enterprise_oid</a> (void)</td></tr>
<tr class="separator:ga4dff82dda2553b9554a9f98561852a50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab101505be59778cf0f2f1ac40bcf3f32"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__traps.html#gab101505be59778cf0f2f1ac40bcf3f32">snmp_trap_dst_enable</a> (u8_t dst_idx, u8_t enable)</td></tr>
<tr class="separator:gab101505be59778cf0f2f1ac40bcf3f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga15e4afbf80ed2260850842e6608c6d86"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__traps.html#ga15e4afbf80ed2260850842e6608c6d86">snmp_trap_dst_ip_set</a> (u8_t dst_idx, const <a class="el" href="group__ipaddr.html#ga16ef96d6cde029029bbf47fee35fd67a">ip_addr_t</a> *dst)</td></tr>
<tr class="separator:ga15e4afbf80ed2260850842e6608c6d86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0e044259289cb690197173f93c17607d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__traps.html#ga0e044259289cb690197173f93c17607d">snmp_send_trap_generic</a> (s32_t generic_trap)</td></tr>
<tr class="separator:ga0e044259289cb690197173f93c17607d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga56bdce04e9e77cb3f8a872718cd273d1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__traps.html#ga56bdce04e9e77cb3f8a872718cd273d1">snmp_send_trap_specific</a> (s32_t specific_trap, struct <a class="el" href="structsnmp__varbind.html">snmp_varbind</a> *varbinds)</td></tr>
<tr class="separator:ga56bdce04e9e77cb3f8a872718cd273d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga96cc7af0118d75049609872ea41187cd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__traps.html#ga96cc7af0118d75049609872ea41187cd">snmp_send_trap</a> (const struct <a class="el" href="structsnmp__obj__id.html">snmp_obj_id</a> *oid, s32_t generic_trap, s32_t specific_trap, struct <a class="el" href="structsnmp__varbind.html">snmp_varbind</a> *varbinds)</td></tr>
<tr class="separator:ga96cc7af0118d75049609872ea41187cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacaf816ff917f7b7e5d00ed6c9f79b51c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__traps.html#gacaf816ff917f7b7e5d00ed6c9f79b51c">snmp_set_auth_traps_enabled</a> (u8_t enable)</td></tr>
<tr class="separator:gacaf816ff917f7b7e5d00ed6c9f79b51c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7804a22615bd9b3a323a3f48a9fb8cb7"><td class="memItemLeft" align="right" valign="top">u8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__traps.html#ga7804a22615bd9b3a323a3f48a9fb8cb7">snmp_get_auth_traps_enabled</a> (void)</td></tr>
<tr class="separator:ga7804a22615bd9b3a323a3f48a9fb8cb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacf277cbca915275190426aeef4cfb103"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__core.html#gacf277cbca915275190426aeef4cfb103">snmp_get_community</a> (void)</td></tr>
<tr class="separator:gacf277cbca915275190426aeef4cfb103"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaba31b6f1816661df5a3b7f2076ee6ec0"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__core.html#gaba31b6f1816661df5a3b7f2076ee6ec0">snmp_get_community_write</a> (void)</td></tr>
<tr class="separator:gaba31b6f1816661df5a3b7f2076ee6ec0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafdd3299e145f53cc826cc11a469f8409"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__traps.html#gafdd3299e145f53cc826cc11a469f8409">snmp_get_community_trap</a> (void)</td></tr>
<tr class="separator:gafdd3299e145f53cc826cc11a469f8409"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga30cc587a260757fdb2b81d462f430ef1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__core.html#ga30cc587a260757fdb2b81d462f430ef1">snmp_set_community</a> (const char *const community)</td></tr>
<tr class="separator:ga30cc587a260757fdb2b81d462f430ef1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga341461766863cff46a44e5f431f2da01"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__core.html#ga341461766863cff46a44e5f431f2da01">snmp_set_community_write</a> (const char *const community)</td></tr>
<tr class="separator:ga341461766863cff46a44e5f431f2da01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5631711f357b6610be7e93b1c6d87760"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__traps.html#ga5631711f357b6610be7e93b1c6d87760">snmp_set_community_trap</a> (const char *const community)</td></tr>
<tr class="separator:ga5631711f357b6610be7e93b1c6d87760"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa8a49d1a6a207740ba44e27b5bbc22be"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__traps.html#gaa8a49d1a6a207740ba44e27b5bbc22be">snmp_coldstart_trap</a> (void)</td></tr>
<tr class="separator:gaa8a49d1a6a207740ba44e27b5bbc22be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf6d0a95a3a406d8ea00849c07aca05ee"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__traps.html#gaf6d0a95a3a406d8ea00849c07aca05ee">snmp_authfail_trap</a> (void)</td></tr>
<tr class="separator:gaf6d0a95a3a406d8ea00849c07aca05ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaff6a6b39322e92862ab55cfcddfe254b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__snmp__core.html#gaff6a6b39322e92862ab55cfcddfe254b">snmp_set_write_callback</a> (snmp_write_callback_fct write_callback, void *callback_arg)</td></tr>
<tr class="separator:gaff6a6b39322e92862ab55cfcddfe254b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>SNMP server main API - start and basic configuration </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="aaf312d8bdbeed2c02560321ab24a022f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf312d8bdbeed2c02560321ab24a022f">&#9670;&nbsp;</a></span>SNMP_GENTRAP_AUTH_FAILURE</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SNMP_GENTRAP_AUTH_FAILURE&#160;&#160;&#160;4</td>
</tr>
</table>
</div><div class="memdoc">
<p>Generic trap: authentication failure </p>
</div>
</div>
<a id="ae9310bbe1948b3c3bc64c073d4621019"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae9310bbe1948b3c3bc64c073d4621019">&#9670;&nbsp;</a></span>SNMP_GENTRAP_COLDSTART</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SNMP_GENTRAP_COLDSTART&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
<p>Generic trap: cold start </p>
</div>
</div>
<a id="ac1cd822650d9ac66d0333a5ad600cfee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac1cd822650d9ac66d0333a5ad600cfee">&#9670;&nbsp;</a></span>SNMP_GENTRAP_EGP_NEIGHBOR_LOSS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SNMP_GENTRAP_EGP_NEIGHBOR_LOSS&#160;&#160;&#160;5</td>
</tr>
</table>
</div><div class="memdoc">
<p>Generic trap: EGP neighbor lost </p>
</div>
</div>
<a id="ab3691cecfa911baa52ccf6054022ba43"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab3691cecfa911baa52ccf6054022ba43">&#9670;&nbsp;</a></span>SNMP_GENTRAP_ENTERPRISE_SPECIFIC</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SNMP_GENTRAP_ENTERPRISE_SPECIFIC&#160;&#160;&#160;6</td>
</tr>
</table>
</div><div class="memdoc">
<p>Generic trap: enterprise specific </p>
</div>
</div>
<a id="a1856efbe83199f456c34a4e5139dfb16"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1856efbe83199f456c34a4e5139dfb16">&#9670;&nbsp;</a></span>SNMP_GENTRAP_LINKDOWN</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SNMP_GENTRAP_LINKDOWN&#160;&#160;&#160;2</td>
</tr>
</table>
</div><div class="memdoc">
<p>Generic trap: link down </p>
</div>
</div>
<a id="afa665cdc02ccd5ee9fe0c4cb1b792186"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa665cdc02ccd5ee9fe0c4cb1b792186">&#9670;&nbsp;</a></span>SNMP_GENTRAP_LINKUP</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SNMP_GENTRAP_LINKUP&#160;&#160;&#160;3</td>
</tr>
</table>
</div><div class="memdoc">
<p>Generic trap: link up </p>
</div>
</div>
<a id="a9a2e5824deab50e639b01181307a0926"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a2e5824deab50e639b01181307a0926">&#9670;&nbsp;</a></span>SNMP_GENTRAP_WARMSTART</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SNMP_GENTRAP_WARMSTART&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>Generic trap: warm start </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="dir_f9284811ac594eafdc3134d5f8b945cb.html">apps</a></li><li class="navelem"><a class="el" href="apps_2snmp_8h.html">snmp.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,31 @@
var apps_2snmp_8h =
[
[ "snmp_varbind", "structsnmp__varbind.html", "structsnmp__varbind" ],
[ "SNMP_GENTRAP_AUTH_FAILURE", "apps_2snmp_8h.html#aaf312d8bdbeed2c02560321ab24a022f", null ],
[ "SNMP_GENTRAP_COLDSTART", "apps_2snmp_8h.html#ae9310bbe1948b3c3bc64c073d4621019", null ],
[ "SNMP_GENTRAP_EGP_NEIGHBOR_LOSS", "apps_2snmp_8h.html#ac1cd822650d9ac66d0333a5ad600cfee", null ],
[ "SNMP_GENTRAP_ENTERPRISE_SPECIFIC", "apps_2snmp_8h.html#ab3691cecfa911baa52ccf6054022ba43", null ],
[ "SNMP_GENTRAP_LINKDOWN", "apps_2snmp_8h.html#a1856efbe83199f456c34a4e5139dfb16", null ],
[ "SNMP_GENTRAP_LINKUP", "apps_2snmp_8h.html#afa665cdc02ccd5ee9fe0c4cb1b792186", null ],
[ "SNMP_GENTRAP_WARMSTART", "apps_2snmp_8h.html#a9a2e5824deab50e639b01181307a0926", null ],
[ "snmp_authfail_trap", "group__snmp__traps.html#gaf6d0a95a3a406d8ea00849c07aca05ee", null ],
[ "snmp_coldstart_trap", "group__snmp__traps.html#gaa8a49d1a6a207740ba44e27b5bbc22be", null ],
[ "snmp_get_auth_traps_enabled", "group__snmp__traps.html#ga7804a22615bd9b3a323a3f48a9fb8cb7", null ],
[ "snmp_get_community", "group__snmp__core.html#gacf277cbca915275190426aeef4cfb103", null ],
[ "snmp_get_community_trap", "group__snmp__traps.html#gafdd3299e145f53cc826cc11a469f8409", null ],
[ "snmp_get_community_write", "group__snmp__core.html#gaba31b6f1816661df5a3b7f2076ee6ec0", null ],
[ "snmp_get_device_enterprise_oid", "group__snmp__core.html#ga4dff82dda2553b9554a9f98561852a50", null ],
[ "snmp_init", "group__snmp__core.html#ga4d88f2fc7655280384131d543e0d83e5", null ],
[ "snmp_send_trap", "group__snmp__traps.html#ga96cc7af0118d75049609872ea41187cd", null ],
[ "snmp_send_trap_generic", "group__snmp__traps.html#ga0e044259289cb690197173f93c17607d", null ],
[ "snmp_send_trap_specific", "group__snmp__traps.html#ga56bdce04e9e77cb3f8a872718cd273d1", null ],
[ "snmp_set_auth_traps_enabled", "group__snmp__traps.html#gacaf816ff917f7b7e5d00ed6c9f79b51c", null ],
[ "snmp_set_community", "group__snmp__core.html#ga30cc587a260757fdb2b81d462f430ef1", null ],
[ "snmp_set_community_trap", "group__snmp__traps.html#ga5631711f357b6610be7e93b1c6d87760", null ],
[ "snmp_set_community_write", "group__snmp__core.html#ga341461766863cff46a44e5f431f2da01", null ],
[ "snmp_set_device_enterprise_oid", "group__snmp__core.html#gacc71ac857bf9215f06a624dda09abe3a", null ],
[ "snmp_set_mibs", "group__snmp__core.html#ga29c76474971f25d038fd486447c70e21", null ],
[ "snmp_set_write_callback", "group__snmp__core.html#gaff6a6b39322e92862ab55cfcddfe254b", null ],
[ "snmp_trap_dst_enable", "group__snmp__traps.html#gab101505be59778cf0f2f1ac40bcf3f32", null ],
[ "snmp_trap_dst_ip_set", "group__snmp__traps.html#ga15e4afbf80ed2260850842e6608c6d86", null ]
];

View File

@ -0,0 +1,168 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/arch.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('arch_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> </div>
<div class="headertitle">
<div class="title">arch.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;arch/cc.h&quot;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;stddef.h&gt;</code><br />
<code>#include &lt;stdint.h&gt;</code><br />
<code>#include &lt;inttypes.h&gt;</code><br />
<code>#include &lt;limits.h&gt;</code><br />
<code>#include &lt;ctype.h&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga1771b7fb65ee640524d0052f229768c3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga1771b7fb65ee640524d0052f229768c3">BYTE_ORDER</a>&#160;&#160;&#160;LITTLE_ENDIAN</td></tr>
<tr class="separator:ga1771b7fb65ee640524d0052f229768c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga77370c377781ee7489e30eaf772ea05a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga77370c377781ee7489e30eaf772ea05a">LWIP_RAND</a>()&#160;&#160;&#160;((u32_t)rand())</td></tr>
<tr class="separator:ga77370c377781ee7489e30eaf772ea05a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaccef167be13a500ce30036030a9b142b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#gaccef167be13a500ce30036030a9b142b">LWIP_PLATFORM_DIAG</a>(x)&#160;&#160;&#160;do {printf x;} while(0)</td></tr>
<tr class="separator:gaccef167be13a500ce30036030a9b142b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7e8bcd0282525704d6dd596bdd1b47d0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga7e8bcd0282525704d6dd596bdd1b47d0">LWIP_PLATFORM_ASSERT</a>(x)</td></tr>
<tr class="separator:ga7e8bcd0282525704d6dd596bdd1b47d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga53954d507c09e521ec0d44a2450bb89d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga53954d507c09e521ec0d44a2450bb89d">LWIP_NO_STDDEF_H</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:ga53954d507c09e521ec0d44a2450bb89d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga122c754db96ecad23bc6f4541d6360c1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga122c754db96ecad23bc6f4541d6360c1">LWIP_NO_STDINT_H</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:ga122c754db96ecad23bc6f4541d6360c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5bf52d6f2729d0c8afd365f69d7d4373"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga5bf52d6f2729d0c8afd365f69d7d4373">LWIP_NO_INTTYPES_H</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:ga5bf52d6f2729d0c8afd365f69d7d4373"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gade9c8513419a799cd78a07ae894bb805"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#gade9c8513419a799cd78a07ae894bb805">LWIP_NO_LIMITS_H</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:gade9c8513419a799cd78a07ae894bb805"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6871ce1e92ae09cdad39a9b230a3a800"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga6871ce1e92ae09cdad39a9b230a3a800">LWIP_NO_CTYPE_H</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:ga6871ce1e92ae09cdad39a9b230a3a800"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa0dd3f76dd9a837feaac61fedc0dbe72"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#gaa0dd3f76dd9a837feaac61fedc0dbe72">LWIP_CONST_CAST</a>(target_type, val)&#160;&#160;&#160;((target_type)((ptrdiff_t)val))</td></tr>
<tr class="separator:gaa0dd3f76dd9a837feaac61fedc0dbe72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaade87973d72135b0b3afccfff4f62eb8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#gaade87973d72135b0b3afccfff4f62eb8">LWIP_ALIGNMENT_CAST</a>(target_type, val)&#160;&#160;&#160;<a class="el" href="group__compiler__abstraction.html#gaa0dd3f76dd9a837feaac61fedc0dbe72">LWIP_CONST_CAST</a>(target_type, val)</td></tr>
<tr class="separator:gaade87973d72135b0b3afccfff4f62eb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga683e5c35d3263fe3145e6a6bc546604a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga683e5c35d3263fe3145e6a6bc546604a">LWIP_PTR_NUMERIC_CAST</a>(target_type, val)&#160;&#160;&#160;<a class="el" href="group__compiler__abstraction.html#gaa0dd3f76dd9a837feaac61fedc0dbe72">LWIP_CONST_CAST</a>(target_type, val)</td></tr>
<tr class="separator:ga683e5c35d3263fe3145e6a6bc546604a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4488578f18ad1a76e4fa8bc288c51446"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga4488578f18ad1a76e4fa8bc288c51446">LWIP_PACKED_CAST</a>(target_type, val)&#160;&#160;&#160;<a class="el" href="group__compiler__abstraction.html#gaa0dd3f76dd9a837feaac61fedc0dbe72">LWIP_CONST_CAST</a>(target_type, val)</td></tr>
<tr class="separator:ga4488578f18ad1a76e4fa8bc288c51446"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga651bb349041669fe717b19f127ef16c0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga651bb349041669fe717b19f127ef16c0">LWIP_DECLARE_MEMORY_ALIGNED</a>(variable_name, size)&#160;&#160;&#160;u8_t variable_name[<a class="el" href="group__compiler__abstraction.html#ga25591dcb72fccc7b5dc46fbc1959694e">LWIP_MEM_ALIGN_BUFFER</a>(size)]</td></tr>
<tr class="separator:ga651bb349041669fe717b19f127ef16c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaef204be511fd32f681b55abc08e9ae18"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#gaef204be511fd32f681b55abc08e9ae18">LWIP_MEM_ALIGN_SIZE</a>(size)&#160;&#160;&#160;(((size) + <a class="el" href="group__lwip__opts__mem.html#ga97343214666ee6dcb18c0bd77b441ea7">MEM_ALIGNMENT</a> - 1U) &amp; ~(MEM_ALIGNMENT-1U))</td></tr>
<tr class="separator:gaef204be511fd32f681b55abc08e9ae18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga25591dcb72fccc7b5dc46fbc1959694e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga25591dcb72fccc7b5dc46fbc1959694e">LWIP_MEM_ALIGN_BUFFER</a>(size)&#160;&#160;&#160;(((size) + <a class="el" href="group__lwip__opts__mem.html#ga97343214666ee6dcb18c0bd77b441ea7">MEM_ALIGNMENT</a> - 1U))</td></tr>
<tr class="separator:ga25591dcb72fccc7b5dc46fbc1959694e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa8e8724eb1c220cbbb90de9e175ce1dc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#gaa8e8724eb1c220cbbb90de9e175ce1dc">LWIP_MEM_ALIGN</a>(addr)&#160;&#160;&#160;((void *)(((mem_ptr_t)(addr) + <a class="el" href="group__lwip__opts__mem.html#ga97343214666ee6dcb18c0bd77b441ea7">MEM_ALIGNMENT</a> - 1) &amp; ~(mem_ptr_t)(<a class="el" href="group__lwip__opts__mem.html#ga97343214666ee6dcb18c0bd77b441ea7">MEM_ALIGNMENT</a>-1)))</td></tr>
<tr class="separator:gaa8e8724eb1c220cbbb90de9e175ce1dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga73199061891adf1b912d20835c7d5e96"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga73199061891adf1b912d20835c7d5e96">PACK_STRUCT_BEGIN</a></td></tr>
<tr class="separator:ga73199061891adf1b912d20835c7d5e96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga465fef70f294e21cbf4ea51fc342f20e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga465fef70f294e21cbf4ea51fc342f20e">PACK_STRUCT_END</a></td></tr>
<tr class="separator:ga465fef70f294e21cbf4ea51fc342f20e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga33623da05bb55497534c3dc26ebebeb2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga33623da05bb55497534c3dc26ebebeb2">PACK_STRUCT_STRUCT</a></td></tr>
<tr class="separator:ga33623da05bb55497534c3dc26ebebeb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaab0b988124e37a978d9a88e7c1c778e0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#gaab0b988124e37a978d9a88e7c1c778e0">PACK_STRUCT_FIELD</a>(x)&#160;&#160;&#160;x</td></tr>
<tr class="separator:gaab0b988124e37a978d9a88e7c1c778e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa8f75e4117374c2d09fbda5566e40b62"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#gaa8f75e4117374c2d09fbda5566e40b62">PACK_STRUCT_FLD_8</a>(x)&#160;&#160;&#160;<a class="el" href="group__compiler__abstraction.html#gaab0b988124e37a978d9a88e7c1c778e0">PACK_STRUCT_FIELD</a>(x)</td></tr>
<tr class="separator:gaa8f75e4117374c2d09fbda5566e40b62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacc89e224363eb0ebca24b64d925c3cb7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#gacc89e224363eb0ebca24b64d925c3cb7">PACK_STRUCT_FLD_S</a>(x)&#160;&#160;&#160;<a class="el" href="group__compiler__abstraction.html#gaab0b988124e37a978d9a88e7c1c778e0">PACK_STRUCT_FIELD</a>(x)</td></tr>
<tr class="separator:gacc89e224363eb0ebca24b64d925c3cb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga57b90d36d8bea3798a5d1815945fd8ef"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga57b90d36d8bea3798a5d1815945fd8ef">PACK_STRUCT_USE_INCLUDES</a></td></tr>
<tr class="separator:ga57b90d36d8bea3798a5d1815945fd8ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga70624a5deb8b9199406372a7f3603ecf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga70624a5deb8b9199406372a7f3603ecf">LWIP_UNUSED_ARG</a>(x)&#160;&#160;&#160;(void)x</td></tr>
<tr class="separator:ga70624a5deb8b9199406372a7f3603ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8e2cba4c97dd38f4d517ed21cf109ade"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__compiler__abstraction.html#ga8e2cba4c97dd38f4d517ed21cf109ade">LWIP_PROVIDE_ERRNO</a></td></tr>
<tr class="separator:ga8e2cba4c97dd38f4d517ed21cf109ade"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Support for different processor and compiler architectures </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="arch_8h.html">arch.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,29 @@
var arch_8h =
[
[ "BYTE_ORDER", "group__compiler__abstraction.html#ga1771b7fb65ee640524d0052f229768c3", null ],
[ "LWIP_ALIGNMENT_CAST", "group__compiler__abstraction.html#gaade87973d72135b0b3afccfff4f62eb8", null ],
[ "LWIP_CONST_CAST", "group__compiler__abstraction.html#gaa0dd3f76dd9a837feaac61fedc0dbe72", null ],
[ "LWIP_DECLARE_MEMORY_ALIGNED", "group__compiler__abstraction.html#ga651bb349041669fe717b19f127ef16c0", null ],
[ "LWIP_MEM_ALIGN", "group__compiler__abstraction.html#gaa8e8724eb1c220cbbb90de9e175ce1dc", null ],
[ "LWIP_MEM_ALIGN_BUFFER", "group__compiler__abstraction.html#ga25591dcb72fccc7b5dc46fbc1959694e", null ],
[ "LWIP_MEM_ALIGN_SIZE", "group__compiler__abstraction.html#gaef204be511fd32f681b55abc08e9ae18", null ],
[ "LWIP_NO_CTYPE_H", "group__compiler__abstraction.html#ga6871ce1e92ae09cdad39a9b230a3a800", null ],
[ "LWIP_NO_INTTYPES_H", "group__compiler__abstraction.html#ga5bf52d6f2729d0c8afd365f69d7d4373", null ],
[ "LWIP_NO_LIMITS_H", "group__compiler__abstraction.html#gade9c8513419a799cd78a07ae894bb805", null ],
[ "LWIP_NO_STDDEF_H", "group__compiler__abstraction.html#ga53954d507c09e521ec0d44a2450bb89d", null ],
[ "LWIP_NO_STDINT_H", "group__compiler__abstraction.html#ga122c754db96ecad23bc6f4541d6360c1", null ],
[ "LWIP_PACKED_CAST", "group__compiler__abstraction.html#ga4488578f18ad1a76e4fa8bc288c51446", null ],
[ "LWIP_PLATFORM_ASSERT", "group__compiler__abstraction.html#ga7e8bcd0282525704d6dd596bdd1b47d0", null ],
[ "LWIP_PLATFORM_DIAG", "group__compiler__abstraction.html#gaccef167be13a500ce30036030a9b142b", null ],
[ "LWIP_PROVIDE_ERRNO", "group__compiler__abstraction.html#ga8e2cba4c97dd38f4d517ed21cf109ade", null ],
[ "LWIP_PTR_NUMERIC_CAST", "group__compiler__abstraction.html#ga683e5c35d3263fe3145e6a6bc546604a", null ],
[ "LWIP_RAND", "group__compiler__abstraction.html#ga77370c377781ee7489e30eaf772ea05a", null ],
[ "LWIP_UNUSED_ARG", "group__compiler__abstraction.html#ga70624a5deb8b9199406372a7f3603ecf", null ],
[ "PACK_STRUCT_BEGIN", "group__compiler__abstraction.html#ga73199061891adf1b912d20835c7d5e96", null ],
[ "PACK_STRUCT_END", "group__compiler__abstraction.html#ga465fef70f294e21cbf4ea51fc342f20e", null ],
[ "PACK_STRUCT_FIELD", "group__compiler__abstraction.html#gaab0b988124e37a978d9a88e7c1c778e0", null ],
[ "PACK_STRUCT_FLD_8", "group__compiler__abstraction.html#gaa8f75e4117374c2d09fbda5566e40b62", null ],
[ "PACK_STRUCT_FLD_S", "group__compiler__abstraction.html#gacc89e224363eb0ebca24b64d925c3cb7", null ],
[ "PACK_STRUCT_STRUCT", "group__compiler__abstraction.html#ga33623da05bb55497534c3dc26ebebeb2", null ],
[ "PACK_STRUCT_USE_INCLUDES", "group__compiler__abstraction.html#ga57b90d36d8bea3798a5d1815945fd8ef", null ]
];

View File

@ -0,0 +1,285 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/core/ipv4/autoip.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('autoip_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">autoip.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="mem_8h.html">lwip/mem.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ip__addr_8h.html">lwip/ip_addr.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="netif_8h.html">lwip/netif.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="autoip_8h.html">lwip/autoip.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="lwip_2etharp_8h.html">lwip/etharp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="prot_2autoip_8h.html">lwip/prot/autoip.h</a>&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a634535156cc1a8cf9f04d3d5c74f8a59"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8c.html#a634535156cc1a8cf9f04d3d5c74f8a59">LWIP_AUTOIP_RAND</a>(<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:a634535156cc1a8cf9f04d3d5c74f8a59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acec75069f6e6ecbe200c5691e56ecd43"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8c.html#acec75069f6e6ecbe200c5691e56ecd43">LWIP_AUTOIP_CREATE_SEED_ADDR</a>(<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:acec75069f6e6ecbe200c5691e56ecd43"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga2122c0b2518b371559fef5ec1d2aed90"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__autoip.html#ga2122c0b2518b371559fef5ec1d2aed90">autoip_set_struct</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, struct <a class="el" href="structautoip.html">autoip</a> *<a class="el" href="structautoip.html">autoip</a>)</td></tr>
<tr class="separator:ga2122c0b2518b371559fef5ec1d2aed90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1461f5826ebefc050e0d63013818d1e8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__autoip.html#ga1461f5826ebefc050e0d63013818d1e8">autoip_start</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga1461f5826ebefc050e0d63013818d1e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11df7a20d52680cd8c1c18fba2b91e9e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8c.html#a11df7a20d52680cd8c1c18fba2b91e9e">autoip_network_changed</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:a11df7a20d52680cd8c1c18fba2b91e9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga58a4dce658dd1263e84eb982f62587d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__autoip.html#ga58a4dce658dd1263e84eb982f62587d4">autoip_stop</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga58a4dce658dd1263e84eb982f62587d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a746fc1d7db1bf1617afae166c9d92c2d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8c.html#a746fc1d7db1bf1617afae166c9d92c2d">autoip_tmr</a> (void)</td></tr>
<tr class="separator:a746fc1d7db1bf1617afae166c9d92c2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acaf2793325c60dc4531c21a3fd55c16e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8c.html#acaf2793325c60dc4531c21a3fd55c16e">autoip_arp_reply</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, struct <a class="el" href="structetharp__hdr.html">etharp_hdr</a> *hdr)</td></tr>
<tr class="separator:acaf2793325c60dc4531c21a3fd55c16e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b4f0c53da17395d9de92a85708a1bb9"><td class="memItemLeft" align="right" valign="top">u8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8c.html#a1b4f0c53da17395d9de92a85708a1bb9">autoip_supplied_address</a> (const struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:a1b4f0c53da17395d9de92a85708a1bb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>AutoIP Automatic LinkLocal IP Configuration</p>
<p>This is a AutoIP implementation for the lwIP TCP/IP stack. It aims to conform with RFC 3927. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="acec75069f6e6ecbe200c5691e56ecd43"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acec75069f6e6ecbe200c5691e56ecd43">&#9670;&nbsp;</a></span>LWIP_AUTOIP_CREATE_SEED_ADDR</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LWIP_AUTOIP_CREATE_SEED_ADDR</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><a class="el" href="structnetif.html">netif</a></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><a class="code" href="def_8c.html#a14f94347a5b9b9e3602705b75b7ae524">lwip_htonl</a>(AUTOIP_RANGE_START + ((u32_t)(((u8_t)(<a class="code" href="structnetif.html">netif</a>-&gt;<a class="code" href="structnetif.html#aee967965d999fc1a4c40a66709304e69">hwaddr</a>[4])) | \</div><div class="line"> ((u32_t)((u8_t)(<a class="code" href="structnetif.html">netif</a>-&gt;<a class="code" href="structnetif.html#aee967965d999fc1a4c40a66709304e69">hwaddr</a>[5]))) &lt;&lt; 8)))</div><div class="ttc" id="structnetif_html_aee967965d999fc1a4c40a66709304e69"><div class="ttname"><a href="structnetif.html#aee967965d999fc1a4c40a66709304e69">netif::hwaddr</a></div><div class="ttdeci">u8_t hwaddr[6U]</div><div class="ttdef"><b>Definition:</b> netif.h:341</div></div>
<div class="ttc" id="def_8c_html_a14f94347a5b9b9e3602705b75b7ae524"><div class="ttname"><a href="def_8c.html#a14f94347a5b9b9e3602705b75b7ae524">lwip_htonl</a></div><div class="ttdeci">u32_t lwip_htonl(u32_t n)</div><div class="ttdef"><b>Definition:</b> def.c:90</div></div>
<div class="ttc" id="structnetif_html"><div class="ttname"><a href="structnetif.html">netif</a></div><div class="ttdef"><b>Definition:</b> netif.h:260</div></div>
</div><!-- fragment --><p>Macro that generates the initial IP address to be tried by AUTOIP. If you want to override this, define it to something else in lwipopts.h. </p>
</div>
</div>
<a id="a634535156cc1a8cf9f04d3d5c74f8a59"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a634535156cc1a8cf9f04d3d5c74f8a59">&#9670;&nbsp;</a></span>LWIP_AUTOIP_RAND</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LWIP_AUTOIP_RAND</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><a class="el" href="structnetif.html">netif</a></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">( (((u32_t)((<a class="code" href="structnetif.html">netif</a>-&gt;<a class="code" href="structnetif.html#aee967965d999fc1a4c40a66709304e69">hwaddr</a>[5]) &amp; 0xff) &lt;&lt; 24) | \</div><div class="line"> ((u32_t)((<a class="code" href="structnetif.html">netif</a>-&gt;<a class="code" href="structnetif.html#aee967965d999fc1a4c40a66709304e69">hwaddr</a>[3]) &amp; 0xff) &lt;&lt; 16) | \</div><div class="line"> ((u32_t)((<a class="code" href="structnetif.html">netif</a>-&gt;<a class="code" href="structnetif.html#aee967965d999fc1a4c40a66709304e69">hwaddr</a>[2]) &amp; 0xff) &lt;&lt; 8) | \</div><div class="line"> ((u32_t)((<a class="code" href="structnetif.html">netif</a>-&gt;<a class="code" href="structnetif.html#aee967965d999fc1a4c40a66709304e69">hwaddr</a>[4]) &amp; 0xff))) + \</div><div class="line"> (netif_autoip_data(<a class="code" href="structnetif.html">netif</a>)? netif_autoip_data(<a class="code" href="structnetif.html">netif</a>)-&gt;tried_llipaddr : 0))</div><div class="ttc" id="structnetif_html_aee967965d999fc1a4c40a66709304e69"><div class="ttname"><a href="structnetif.html#aee967965d999fc1a4c40a66709304e69">netif::hwaddr</a></div><div class="ttdeci">u8_t hwaddr[6U]</div><div class="ttdef"><b>Definition:</b> netif.h:341</div></div>
<div class="ttc" id="structnetif_html"><div class="ttname"><a href="structnetif.html">netif</a></div><div class="ttdef"><b>Definition:</b> netif.h:260</div></div>
</div><!-- fragment --><p>Pseudo random macro based on netif informations. You could use "rand()" from the C Library if you define LWIP_AUTOIP_RAND in lwipopts.h </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="acaf2793325c60dc4531c21a3fd55c16e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acaf2793325c60dc4531c21a3fd55c16e">&#9670;&nbsp;</a></span>autoip_arp_reply()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void autoip_arp_reply </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structetharp__hdr.html">etharp_hdr</a> *&#160;</td>
<td class="paramname"><em>hdr</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Handles every incoming ARP Packet, called by <a class="el" href="etharp_8c.html#a540a5506979693ef9ac4496db9bfa7d6">etharp_input()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">netif</td><td>network interface to use for autoip processing </td></tr>
<tr><td class="paramname">hdr</td><td>Incoming ARP packet </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a11df7a20d52680cd8c1c18fba2b91e9e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a11df7a20d52680cd8c1c18fba2b91e9e">&#9670;&nbsp;</a></span>autoip_network_changed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void autoip_network_changed </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Handle a possible change in the network configuration.</p>
<p>If there is an AutoIP address configured, take the interface down and begin probing with the same address. </p>
</div>
</div>
<a id="a1b4f0c53da17395d9de92a85708a1bb9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b4f0c53da17395d9de92a85708a1bb9">&#9670;&nbsp;</a></span>autoip_supplied_address()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u8_t autoip_supplied_address </td>
<td>(</td>
<td class="paramtype">const struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>check if AutoIP supplied netif-&gt;<a class="el" href="structip__addr.html">ip_addr</a></p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">netif</td><td>the netif to check </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 if AutoIP supplied netif-&gt;<a class="el" href="structip__addr.html">ip_addr</a> (state BOUND or ANNOUNCING), 0 otherwise </dd></dl>
</div>
</div>
<a id="a746fc1d7db1bf1617afae166c9d92c2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a746fc1d7db1bf1617afae166c9d92c2d">&#9670;&nbsp;</a></span>autoip_tmr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void autoip_tmr </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Has to be called in loop every AUTOIP_TMR_INTERVAL milliseconds </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_aebb8dcc11953d78e620bbef0b9e2183.html">core</a></li><li class="navelem"><a class="el" href="dir_a32e111ee6805cfc63488fd2d37f2390.html">ipv4</a></li><li class="navelem"><a class="el" href="autoip_8c.html">autoip.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,12 @@
var autoip_8c =
[
[ "LWIP_AUTOIP_CREATE_SEED_ADDR", "autoip_8c.html#acec75069f6e6ecbe200c5691e56ecd43", null ],
[ "LWIP_AUTOIP_RAND", "autoip_8c.html#a634535156cc1a8cf9f04d3d5c74f8a59", null ],
[ "autoip_arp_reply", "autoip_8c.html#acaf2793325c60dc4531c21a3fd55c16e", null ],
[ "autoip_network_changed", "autoip_8c.html#a11df7a20d52680cd8c1c18fba2b91e9e", null ],
[ "autoip_set_struct", "group__autoip.html#ga2122c0b2518b371559fef5ec1d2aed90", null ],
[ "autoip_start", "group__autoip.html#ga1461f5826ebefc050e0d63013818d1e8", null ],
[ "autoip_stop", "group__autoip.html#ga58a4dce658dd1263e84eb982f62587d4", null ],
[ "autoip_supplied_address", "autoip_8c.html#a1b4f0c53da17395d9de92a85708a1bb9", null ],
[ "autoip_tmr", "autoip_8c.html#a746fc1d7db1bf1617afae166c9d92c2d", null ]
];

View File

@ -0,0 +1,276 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/autoip.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('autoip_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">autoip.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="netif_8h.html">lwip/netif.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="lwip_2etharp_8h.html">lwip/etharp.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structautoip.html">autoip</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a8986919a452ab77eec9a199ff6668e92"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8h.html#a8986919a452ab77eec9a199ff6668e92">AUTOIP_TMR_INTERVAL</a>&#160;&#160;&#160;100</td></tr>
<tr class="separator:a8986919a452ab77eec9a199ff6668e92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaeb4b778fce078bee84144ab50916b15"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8h.html#aaeb4b778fce078bee84144ab50916b15">autoip_remove_struct</a>(<a class="el" href="structnetif.html">netif</a>)&#160;&#160;&#160;do { (<a class="el" href="structnetif.html">netif</a>)-&gt;<a class="el" href="structautoip.html">autoip</a> = NULL; } while (0)</td></tr>
<tr class="separator:aaeb4b778fce078bee84144ab50916b15"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga2122c0b2518b371559fef5ec1d2aed90"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__autoip.html#ga2122c0b2518b371559fef5ec1d2aed90">autoip_set_struct</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, struct <a class="el" href="structautoip.html">autoip</a> *<a class="el" href="structautoip.html">autoip</a>)</td></tr>
<tr class="separator:ga2122c0b2518b371559fef5ec1d2aed90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1461f5826ebefc050e0d63013818d1e8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__autoip.html#ga1461f5826ebefc050e0d63013818d1e8">autoip_start</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga1461f5826ebefc050e0d63013818d1e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga58a4dce658dd1263e84eb982f62587d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__autoip.html#ga58a4dce658dd1263e84eb982f62587d4">autoip_stop</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga58a4dce658dd1263e84eb982f62587d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acaf2793325c60dc4531c21a3fd55c16e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8h.html#acaf2793325c60dc4531c21a3fd55c16e">autoip_arp_reply</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, struct <a class="el" href="structetharp__hdr.html">etharp_hdr</a> *hdr)</td></tr>
<tr class="separator:acaf2793325c60dc4531c21a3fd55c16e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a746fc1d7db1bf1617afae166c9d92c2d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8h.html#a746fc1d7db1bf1617afae166c9d92c2d">autoip_tmr</a> (void)</td></tr>
<tr class="separator:a746fc1d7db1bf1617afae166c9d92c2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11df7a20d52680cd8c1c18fba2b91e9e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8h.html#a11df7a20d52680cd8c1c18fba2b91e9e">autoip_network_changed</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:a11df7a20d52680cd8c1c18fba2b91e9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b4f0c53da17395d9de92a85708a1bb9"><td class="memItemLeft" align="right" valign="top">u8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8h.html#a1b4f0c53da17395d9de92a85708a1bb9">autoip_supplied_address</a> (const struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:a1b4f0c53da17395d9de92a85708a1bb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>AutoIP Automatic LinkLocal IP Configuration </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="aaeb4b778fce078bee84144ab50916b15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaeb4b778fce078bee84144ab50916b15">&#9670;&nbsp;</a></span>autoip_remove_struct</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define autoip_remove_struct</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><a class="el" href="structnetif.html">netif</a></td><td>)</td>
<td>&#160;&#160;&#160;do { (<a class="el" href="structnetif.html">netif</a>)-&gt;<a class="el" href="structautoip.html">autoip</a> = NULL; } while (0)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove a struct autoip previously set to the netif using <a class="el" href="group__autoip.html#ga2122c0b2518b371559fef5ec1d2aed90">autoip_set_struct()</a> </p>
</div>
</div>
<a id="a8986919a452ab77eec9a199ff6668e92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8986919a452ab77eec9a199ff6668e92">&#9670;&nbsp;</a></span>AUTOIP_TMR_INTERVAL</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define AUTOIP_TMR_INTERVAL&#160;&#160;&#160;100</td>
</tr>
</table>
</div><div class="memdoc">
<p>AutoIP Timing </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="acaf2793325c60dc4531c21a3fd55c16e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acaf2793325c60dc4531c21a3fd55c16e">&#9670;&nbsp;</a></span>autoip_arp_reply()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void autoip_arp_reply </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structetharp__hdr.html">etharp_hdr</a> *&#160;</td>
<td class="paramname"><em>hdr</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Handles every incoming ARP Packet, called by <a class="el" href="etharp_8c.html#a540a5506979693ef9ac4496db9bfa7d6">etharp_input()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">netif</td><td>network interface to use for autoip processing </td></tr>
<tr><td class="paramname">hdr</td><td>Incoming ARP packet </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a11df7a20d52680cd8c1c18fba2b91e9e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a11df7a20d52680cd8c1c18fba2b91e9e">&#9670;&nbsp;</a></span>autoip_network_changed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void autoip_network_changed </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Handle a possible change in the network configuration.</p>
<p>If there is an AutoIP address configured, take the interface down and begin probing with the same address. </p>
</div>
</div>
<a id="a1b4f0c53da17395d9de92a85708a1bb9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b4f0c53da17395d9de92a85708a1bb9">&#9670;&nbsp;</a></span>autoip_supplied_address()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u8_t autoip_supplied_address </td>
<td>(</td>
<td class="paramtype">const struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>check if AutoIP supplied netif-&gt;<a class="el" href="structip__addr.html">ip_addr</a></p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">netif</td><td>the netif to check </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 if AutoIP supplied netif-&gt;<a class="el" href="structip__addr.html">ip_addr</a> (state BOUND or ANNOUNCING), 0 otherwise </dd></dl>
</div>
</div>
<a id="a746fc1d7db1bf1617afae166c9d92c2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a746fc1d7db1bf1617afae166c9d92c2d">&#9670;&nbsp;</a></span>autoip_tmr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void autoip_tmr </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Has to be called in loop every AUTOIP_TMR_INTERVAL milliseconds </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="autoip_8h.html">autoip.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,13 @@
var autoip_8h =
[
[ "autoip", "structautoip.html", "structautoip" ],
[ "autoip_remove_struct", "autoip_8h.html#aaeb4b778fce078bee84144ab50916b15", null ],
[ "AUTOIP_TMR_INTERVAL", "autoip_8h.html#a8986919a452ab77eec9a199ff6668e92", null ],
[ "autoip_arp_reply", "autoip_8h.html#acaf2793325c60dc4531c21a3fd55c16e", null ],
[ "autoip_network_changed", "autoip_8h.html#a11df7a20d52680cd8c1c18fba2b91e9e", null ],
[ "autoip_set_struct", "group__autoip.html#ga2122c0b2518b371559fef5ec1d2aed90", null ],
[ "autoip_start", "group__autoip.html#ga1461f5826ebefc050e0d63013818d1e8", null ],
[ "autoip_stop", "group__autoip.html#ga58a4dce658dd1263e84eb982f62587d4", null ],
[ "autoip_supplied_address", "autoip_8h.html#a1b4f0c53da17395d9de92a85708a1bb9", null ],
[ "autoip_tmr", "autoip_8h.html#a746fc1d7db1bf1617afae166c9d92c2d", null ]
];

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

View File

@ -0,0 +1,124 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/netif/bridgeif.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('bridgeif_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">bridgeif.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="bridgeif_8h.html">netif/bridgeif.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="netif_8h.html">lwip/netif.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="sys_8h.html">lwip/sys.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="lwip_2etharp_8h.html">lwip/etharp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ethip6_8h.html">lwip/ethip6.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="snmp_8h.html">lwip/snmp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="timeouts_8h.html">lwip/timeouts.h</a>&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gad20fea2657431d4a0905be80cb0b4666"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif.html#gad20fea2657431d4a0905be80cb0b4666">bridgeif_fdb_add</a> (struct <a class="el" href="structnetif.html">netif</a> *bridgeif, const struct <a class="el" href="structeth__addr.html">eth_addr</a> *addr, bridgeif_portmask_t ports)</td></tr>
<tr class="separator:gad20fea2657431d4a0905be80cb0b4666"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga79349b1e9d0f944e8abad5a6cfb1c8e8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif.html#ga79349b1e9d0f944e8abad5a6cfb1c8e8">bridgeif_fdb_remove</a> (struct <a class="el" href="structnetif.html">netif</a> *bridgeif, const struct <a class="el" href="structeth__addr.html">eth_addr</a> *addr)</td></tr>
<tr class="separator:ga79349b1e9d0f944e8abad5a6cfb1c8e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga23cc2c5f8fccefc470093840cc53727c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif.html#ga23cc2c5f8fccefc470093840cc53727c">bridgeif_init</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga23cc2c5f8fccefc470093840cc53727c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga51b7d1af22f7023aabd8502aadf77c77"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif.html#ga51b7d1af22f7023aabd8502aadf77c77">bridgeif_add_port</a> (struct <a class="el" href="structnetif.html">netif</a> *bridgeif, struct <a class="el" href="structnetif.html">netif</a> *portif)</td></tr>
<tr class="separator:ga51b7d1af22f7023aabd8502aadf77c77"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>lwIP netif implementing an IEEE 802.1D MAC Bridge </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_900e6f7ff90690cb8edb53323dd38d80.html">netif</a></li><li class="navelem"><a class="el" href="bridgeif_8c.html">bridgeif.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,7 @@
var bridgeif_8c =
[
[ "bridgeif_add_port", "group__bridgeif.html#ga51b7d1af22f7023aabd8502aadf77c77", null ],
[ "bridgeif_fdb_add", "group__bridgeif.html#gad20fea2657431d4a0905be80cb0b4666", null ],
[ "bridgeif_fdb_remove", "group__bridgeif.html#ga79349b1e9d0f944e8abad5a6cfb1c8e8", null ],
[ "bridgeif_init", "group__bridgeif.html#ga23cc2c5f8fccefc470093840cc53727c", null ]
];

View File

@ -0,0 +1,146 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/netif/bridgeif.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('bridgeif_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">bridgeif.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="bridgeif__opts_8h.html">netif/bridgeif_opts.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="err_8h.html">lwip/err.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="lwip_2prot_2ethernet_8h.html">lwip/prot/ethernet.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="tcpip_8h.html">lwip/tcpip.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbridgeif__initdata__s.html">bridgeif_initdata_s</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga3d41c7905b61aef3a3b8c61b3af7879f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif.html#ga3d41c7905b61aef3a3b8c61b3af7879f">BRIDGEIF_INITDATA1</a>(max_ports, max_fdb_dynamic_entries, max_fdb_static_entries, ethaddr)&#160;&#160;&#160;{ethaddr, max_ports, max_fdb_dynamic_entries, max_fdb_static_entries}</td></tr>
<tr class="separator:ga3d41c7905b61aef3a3b8c61b3af7879f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaaeb47fbf1dd6c30cb502343fa0d0741"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif.html#gaaaeb47fbf1dd6c30cb502343fa0d0741">BRIDGEIF_INITDATA2</a>(max_ports, max_fdb_dynamic_entries, max_fdb_static_entries, e0, e1, e2, e3, e4, e5)&#160;&#160;&#160;{{e0, e1, e2, e3, e4, e5}, max_ports, max_fdb_dynamic_entries, max_fdb_static_entries}</td></tr>
<tr class="separator:gaaaeb47fbf1dd6c30cb502343fa0d0741"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gac47f8ce66bc6dad5dd9829467f93a1bb"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structbridgeif__initdata__s.html">bridgeif_initdata_s</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif.html#gac47f8ce66bc6dad5dd9829467f93a1bb">bridgeif_initdata_t</a></td></tr>
<tr class="separator:gac47f8ce66bc6dad5dd9829467f93a1bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga23cc2c5f8fccefc470093840cc53727c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif.html#ga23cc2c5f8fccefc470093840cc53727c">bridgeif_init</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga23cc2c5f8fccefc470093840cc53727c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga51b7d1af22f7023aabd8502aadf77c77"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif.html#ga51b7d1af22f7023aabd8502aadf77c77">bridgeif_add_port</a> (struct <a class="el" href="structnetif.html">netif</a> *bridgeif, struct <a class="el" href="structnetif.html">netif</a> *portif)</td></tr>
<tr class="separator:ga51b7d1af22f7023aabd8502aadf77c77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad20fea2657431d4a0905be80cb0b4666"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif.html#gad20fea2657431d4a0905be80cb0b4666">bridgeif_fdb_add</a> (struct <a class="el" href="structnetif.html">netif</a> *bridgeif, const struct <a class="el" href="structeth__addr.html">eth_addr</a> *addr, bridgeif_portmask_t ports)</td></tr>
<tr class="separator:gad20fea2657431d4a0905be80cb0b4666"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga79349b1e9d0f944e8abad5a6cfb1c8e8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif.html#ga79349b1e9d0f944e8abad5a6cfb1c8e8">bridgeif_fdb_remove</a> (struct <a class="el" href="structnetif.html">netif</a> *bridgeif, const struct <a class="el" href="structeth__addr.html">eth_addr</a> *addr)</td></tr>
<tr class="separator:ga79349b1e9d0f944e8abad5a6cfb1c8e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad912bfd3ce8e24d0eb48b7dc9de07c39"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif__fdb.html#gad912bfd3ce8e24d0eb48b7dc9de07c39">bridgeif_fdb_update_src</a> (void *fdb_ptr, struct <a class="el" href="structeth__addr.html">eth_addr</a> *src_addr, u8_t port_idx)</td></tr>
<tr class="separator:gad912bfd3ce8e24d0eb48b7dc9de07c39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga616fb7404be5da79d8092b4a14976750"><td class="memItemLeft" align="right" valign="top">bridgeif_portmask_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif__fdb.html#ga616fb7404be5da79d8092b4a14976750">bridgeif_fdb_get_dst_ports</a> (void *fdb_ptr, struct <a class="el" href="structeth__addr.html">eth_addr</a> *dst_addr)</td></tr>
<tr class="separator:ga616fb7404be5da79d8092b4a14976750"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf7935226ee7f99f964bf0135b6cb9ca0"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif__fdb.html#gaf7935226ee7f99f964bf0135b6cb9ca0">bridgeif_fdb_init</a> (u16_t max_fdb_entries)</td></tr>
<tr class="separator:gaf7935226ee7f99f964bf0135b6cb9ca0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>lwIP netif implementing an IEEE 802.1D MAC Bridge </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_c9a67764bf8a12cf6b427bb859cbcd0b.html">netif</a></li><li class="navelem"><a class="el" href="bridgeif_8h.html">bridgeif.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,13 @@
var bridgeif_8h =
[
[ "BRIDGEIF_INITDATA1", "group__bridgeif.html#ga3d41c7905b61aef3a3b8c61b3af7879f", null ],
[ "BRIDGEIF_INITDATA2", "group__bridgeif.html#gaaaeb47fbf1dd6c30cb502343fa0d0741", null ],
[ "bridgeif_initdata_t", "group__bridgeif.html#gac47f8ce66bc6dad5dd9829467f93a1bb", null ],
[ "bridgeif_add_port", "group__bridgeif.html#ga51b7d1af22f7023aabd8502aadf77c77", null ],
[ "bridgeif_fdb_add", "group__bridgeif.html#gad20fea2657431d4a0905be80cb0b4666", null ],
[ "bridgeif_fdb_get_dst_ports", "group__bridgeif__fdb.html#ga616fb7404be5da79d8092b4a14976750", null ],
[ "bridgeif_fdb_init", "group__bridgeif__fdb.html#gaf7935226ee7f99f964bf0135b6cb9ca0", null ],
[ "bridgeif_fdb_remove", "group__bridgeif.html#ga79349b1e9d0f944e8abad5a6cfb1c8e8", null ],
[ "bridgeif_fdb_update_src", "group__bridgeif__fdb.html#gad912bfd3ce8e24d0eb48b7dc9de07c39", null ],
[ "bridgeif_init", "group__bridgeif.html#ga23cc2c5f8fccefc470093840cc53727c", null ]
];

View File

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/netif/bridgeif_fdb.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('bridgeif__fdb_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">bridgeif_fdb.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="bridgeif_8h.html">netif/bridgeif.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="sys_8h.html">lwip/sys.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="mem_8h.html">lwip/mem.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="timeouts_8h.html">lwip/timeouts.h</a>&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gad912bfd3ce8e24d0eb48b7dc9de07c39"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif__fdb.html#gad912bfd3ce8e24d0eb48b7dc9de07c39">bridgeif_fdb_update_src</a> (void *fdb_ptr, struct <a class="el" href="structeth__addr.html">eth_addr</a> *src_addr, u8_t port_idx)</td></tr>
<tr class="separator:gad912bfd3ce8e24d0eb48b7dc9de07c39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga616fb7404be5da79d8092b4a14976750"><td class="memItemLeft" align="right" valign="top">bridgeif_portmask_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif__fdb.html#ga616fb7404be5da79d8092b4a14976750">bridgeif_fdb_get_dst_ports</a> (void *fdb_ptr, struct <a class="el" href="structeth__addr.html">eth_addr</a> *dst_addr)</td></tr>
<tr class="separator:ga616fb7404be5da79d8092b4a14976750"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf7935226ee7f99f964bf0135b6cb9ca0"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif__fdb.html#gaf7935226ee7f99f964bf0135b6cb9ca0">bridgeif_fdb_init</a> (u16_t max_fdb_entries)</td></tr>
<tr class="separator:gaf7935226ee7f99f964bf0135b6cb9ca0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>lwIP netif implementing an FDB for IEEE 802.1D MAC Bridge </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_900e6f7ff90690cb8edb53323dd38d80.html">netif</a></li><li class="navelem"><a class="el" href="bridgeif__fdb_8c.html">bridgeif_fdb.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,6 @@
var bridgeif__fdb_8c =
[
[ "bridgeif_fdb_get_dst_ports", "group__bridgeif__fdb.html#ga616fb7404be5da79d8092b4a14976750", null ],
[ "bridgeif_fdb_init", "group__bridgeif__fdb.html#gaf7935226ee7f99f964bf0135b6cb9ca0", null ],
[ "bridgeif_fdb_update_src", "group__bridgeif__fdb.html#gad912bfd3ce8e24d0eb48b7dc9de07c39", null ]
];

View File

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/netif/bridgeif_opts.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('bridgeif__opts_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> </div>
<div class="headertitle">
<div class="title">bridgeif_opts.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga5aed5cd9b01ba1345b47845cd04ca30d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif__opts.html#ga5aed5cd9b01ba1345b47845cd04ca30d">BRIDGEIF_PORT_NETIFS_OUTPUT_DIRECT</a>&#160;&#160;&#160;<a class="el" href="group__lwip__opts__nosys.html#gae00ba99de94a5bf84d832be8976df59b">NO_SYS</a></td></tr>
<tr class="separator:ga5aed5cd9b01ba1345b47845cd04ca30d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6fe03b84359150b7dea3dfca942b6414"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif__opts.html#ga6fe03b84359150b7dea3dfca942b6414">BRIDGEIF_MAX_PORTS</a>&#160;&#160;&#160;7</td></tr>
<tr class="separator:ga6fe03b84359150b7dea3dfca942b6414"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaab45e20e9b09a98217994082968cec73"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif__opts.html#gaab45e20e9b09a98217994082968cec73">BRIDGEIF_DEBUG</a>&#160;&#160;&#160;<a class="el" href="group__debugging__levels.html#gadab1cdc3f45939a3a5c9a3d7e04987e1">LWIP_DBG_OFF</a></td></tr>
<tr class="separator:gaab45e20e9b09a98217994082968cec73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga72e389f592470dc50288a68f3db70730"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif__opts.html#ga72e389f592470dc50288a68f3db70730">BRIDGEIF_FDB_DEBUG</a>&#160;&#160;&#160;<a class="el" href="group__debugging__levels.html#gadab1cdc3f45939a3a5c9a3d7e04987e1">LWIP_DBG_OFF</a></td></tr>
<tr class="separator:ga72e389f592470dc50288a68f3db70730"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac456e97b1b0e9a57449596a2b229763a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__bridgeif__opts.html#gac456e97b1b0e9a57449596a2b229763a">BRIDGEIF_FW_DEBUG</a>&#160;&#160;&#160;<a class="el" href="group__debugging__levels.html#gadab1cdc3f45939a3a5c9a3d7e04987e1">LWIP_DBG_OFF</a></td></tr>
<tr class="separator:gac456e97b1b0e9a57449596a2b229763a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>lwIP netif implementing an IEEE 802.1D MAC Bridge </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_c9a67764bf8a12cf6b427bb859cbcd0b.html">netif</a></li><li class="navelem"><a class="el" href="bridgeif__opts_8h.html">bridgeif_opts.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,8 @@
var bridgeif__opts_8h =
[
[ "BRIDGEIF_DEBUG", "group__bridgeif__opts.html#gaab45e20e9b09a98217994082968cec73", null ],
[ "BRIDGEIF_FDB_DEBUG", "group__bridgeif__opts.html#ga72e389f592470dc50288a68f3db70730", null ],
[ "BRIDGEIF_FW_DEBUG", "group__bridgeif__opts.html#gac456e97b1b0e9a57449596a2b229763a", null ],
[ "BRIDGEIF_MAX_PORTS", "group__bridgeif__opts.html#ga6fe03b84359150b7dea3dfca942b6414", null ],
[ "BRIDGEIF_PORT_NETIFS_OUTPUT_DIRECT", "group__bridgeif__opts.html#ga5aed5cd9b01ba1345b47845cd04ca30d", null ]
];

View File

@ -0,0 +1,102 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: Reporting bugs</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('bugs.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Reporting bugs </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Please report bugs in the lwIP bug tracker at savannah.<br />
BEFORE submitting, please check if the bug has already been reported!<br />
<a href="https://savannah.nongnu.org/bugs/?group=lwip">https://savannah.nongnu.org/bugs/?group=lwip</a> </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,154 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: Data Structure Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classes.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Data Structure Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter__">_</a>&#160;|&#160;<a class="qindex" href="#letter_a">a</a>&#160;|&#160;<a class="qindex" href="#letter_b">b</a>&#160;|&#160;<a class="qindex" href="#letter_d">d</a>&#160;|&#160;<a class="qindex" href="#letter_e">e</a>&#160;|&#160;<a class="qindex" href="#letter_g">g</a>&#160;|&#160;<a class="qindex" href="#letter_i">i</a>&#160;|&#160;<a class="qindex" href="#letter_l">l</a>&#160;|&#160;<a class="qindex" href="#letter_m">m</a>&#160;|&#160;<a class="qindex" href="#letter_n">n</a>&#160;|&#160;<a class="qindex" href="#letter_p">p</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a>&#160;|&#160;<a class="qindex" href="#letter_s">s</a>&#160;|&#160;<a class="qindex" href="#letter_t">t</a>&#160;|&#160;<a class="qindex" href="#letter_u">u</a>&#160;|&#160;<a class="qindex" href="#letter_z">z</a></div>
<table class="classindex">
<tr><td rowspan="2" valign="bottom"><a name="letter__"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;_&#160;&#160;</div></td></tr></table>
</td><td rowspan="2" valign="bottom"><a name="letter_i"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;i&#160;&#160;</div></td></tr></table>
</td><td rowspan="2" valign="bottom"><a name="letter_m"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;m&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structpbuf__custom.html">pbuf_custom</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsntp__server.html">sntp_server</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structpbuf__custom__ref.html">pbuf_custom_ref</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsntp__time.html">sntp_time</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="struct__lwiperf__settings.html">_lwiperf_settings</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structicmp6__echo__hdr.html">icmp6_echo_hdr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmdns__host.html">mdns_host</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structpbuf__rom.html">pbuf_rom</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsntp__timestamps.html">sntp_timestamps</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="struct__lwiperf__state__tcp.html">_lwiperf_state_tcp</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structicmp6__hdr.html">icmp6_hdr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmdns__outpacket.html">mdns_outpacket</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_r"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;r&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="unionsockaddr__aligned.html">sockaddr_aligned</a>&#160;&#160;&#160;</td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_a"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;a&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structicmp__echo__hdr.html">icmp_echo_hdr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmdns__packet.html">mdns_packet</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structstats__.html">stats_</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structieee__802154__hdr.html">ieee_802154_hdr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmdns__rr__info.html">mdns_rr_info</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structraw__pcb.html">raw_pcb</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structstats__igmp.html">stats_igmp</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structaltcp__allocator__s.html">altcp_allocator_s</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structigmp__group.html">igmp_group</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmdns__service.html">mdns_service</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structredirect__header.html">redirect_header</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structstats__mem.html">stats_mem</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structapi__msg.html">api_msg</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structigmp__msg.html">igmp_msg</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmem.html">mem</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrs__header.html">rs_header</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structstats__mib2.html">stats_mib2</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structautoip.html">autoip</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structip4__addr.html">ip4_addr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmemp__desc.html">memp_desc</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_s"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;s&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structstats__mib2__netif__ctrs.html">stats_mib2_netif_ctrs</a>&#160;&#160;&#160;</td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_b"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;b&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structip4__addr__packed.html">ip4_addr_packed</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmld__group.html">mld_group</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structstats__proto.html">stats_proto</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structip4__addr__wordaligned.html">ip4_addr_wordaligned</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmld__header.html">mld_header</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsmtp__send__request.html">smtp_send_request</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structstats__sys.html">stats_sys</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structbridgeif__initdata__s.html">bridgeif_initdata_s</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structip6__addr.html">ip6_addr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmqtt__client__s.html">mqtt_client_s</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsmtp__session.html">smtp_session</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structstats__syselem.html">stats_syselem</a>&#160;&#160;&#160;</td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_d"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;d&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structip6__addr__packed.html">ip6_addr_packed</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmqtt__connect__client__info__t.html">mqtt_connect_client_info_t</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__leaf__node.html">snmp_leaf_node</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnetif__ext__callback__args__t_1_1status__changed__s.html">netif_ext_callback_args_t::status_changed_s</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structip6__hdr.html">ip6_hdr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmqtt__request__t.html">mqtt_request_t</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__mib.html">snmp_mib</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_t"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;t&#160;&#160;</div></td></tr></table>
</td></tr>
<tr><td valign="top"><a class="el" href="structdhcp6__msg.html">dhcp6_msg</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structip6__reass__helper.html">ip6_reass_helper</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmqtt__ringbuf__t.html">mqtt_ringbuf_t</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__next__oid__state.html">snmp_next_oid_state</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structdhcp__msg.html">dhcp_msg</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structip6__reassdata.html">ip6_reassdata</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_n"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;n&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structsnmp__node.html">snmp_node</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structt_c_g_i.html">tCGI</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structdns__answer.html">dns_answer</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structip__addr.html">ip_addr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__node__instance.html">snmp_node_instance</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtcp__ext__arg__callbacks.html">tcp_ext_arg_callbacks</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structdns__api__msg.html">dns_api_msg</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structip__globals.html">ip_globals</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structna__header.html">na_header</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__obj__id.html">snmp_obj_id</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtcp__pcb.html">tcp_pcb</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structdns__hdr.html">dns_hdr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structip__reass__helper.html">ip_reass_helper</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnd6__neighbor__cache__entry.html">nd6_neighbor_cache_entry</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__oid__range.html">snmp_oid_range</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtcp__pcb__listen.html">tcp_pcb_listen</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structdns__query.html">dns_query</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structip__reassdata.html">ip_reassdata</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnd6__q__entry.html">nd6_q_entry</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__scalar__array__node.html">snmp_scalar_array_node</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structtftp__context.html">tftp_context</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structdns__req__entry.html">dns_req_entry</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnetif__ext__callback__args__t_1_1ipv4__changed__s.html">netif_ext_callback_args_t::ipv4_changed_s</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnetbios__answer.html">netbios_answer</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__scalar__array__node__def.html">snmp_scalar_array_node_def</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structthreadsync__data.html">threadsync_data</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structdns__table__entry.html">dns_table_entry</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnetif__ext__callback__args__t_1_1ipv6__addr__state__changed__s.html">netif_ext_callback_args_t::ipv6_addr_state_changed_s</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnetbios__hdr.html">netbios_hdr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__scalar__node.html">snmp_scalar_node</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_u"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;u&#160;&#160;</div></td></tr></table>
</td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_e"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;e&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structnetif__ext__callback__args__t_1_1ipv6__set__s.html">netif_ext_callback_args_t::ipv6_set_s</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnetbios__name__hdr.html">netbios_name_hdr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__table__col__def.html">snmp_table_col_def</a>&#160;&#160;&#160;</td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_l"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;l&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structnetbios__question__hdr.html">netbios_question_hdr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__table__node.html">snmp_table_node</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structudp__pcb.html">udp_pcb</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structeth__addr.html">eth_addr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnetbios__resp.html">netbios_resp</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__table__simple__node.html">snmp_table_simple_node</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_z"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;z&#160;&#160;</div></td></tr></table>
</td></tr>
<tr><td valign="top"><a class="el" href="structeth__hdr.html">eth_hdr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnetif__ext__callback__args__t_1_1link__changed__s.html">netif_ext_callback_args_t::link_changed_s</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnetbuf.html">netbuf</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__threadsync__instance.html">snmp_threadsync_instance</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structeth__vlan__hdr.html">eth_vlan_hdr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structlowpan6__ieee802154__data.html">lowpan6_ieee802154_data</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnetconn.html">netconn</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__threadsync__node.html">snmp_threadsync_node</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structzepif__init.html">zepif_init</a>&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structetharp__hdr.html">etharp_hdr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structlowpan6__link__addr.html">lowpan6_link_addr</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnetif.html">netif</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__tree__node.html">snmp_tree_node</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td valign="top"><a class="el" href="structetharp__q__entry.html">etharp_q_entry</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structlowpan6__reass__helper.html">lowpan6_reass_helper</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="unionnetif__ext__callback__args__t.html">netif_ext_callback_args_t</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__varbind.html">snmp_varbind</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_g"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;g&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structlwip__cyclic__timer.html">lwip_cyclic_timer</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structnetvector.html">netvector</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structsnmp__varbind__len.html">snmp_varbind_len</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td valign="top"><a class="el" href="structlwip__select__cb.html">lwip_select_cb</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structns__header.html">ns_header</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="unionsnmp__variant__value.html">snmp_variant_value</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td valign="top"><a class="el" href="structgethostbyname__r__helper.html">gethostbyname_r_helper</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structlwip__sock.html">lwip_sock</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_p"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;p&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structsntp__msg.html">sntp_msg</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td valign="top"><a class="el" href="structpbuf.html">pbuf</a>&#160;&#160;&#160;</td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter__">_</a>&#160;|&#160;<a class="qindex" href="#letter_a">a</a>&#160;|&#160;<a class="qindex" href="#letter_b">b</a>&#160;|&#160;<a class="qindex" href="#letter_d">d</a>&#160;|&#160;<a class="qindex" href="#letter_e">e</a>&#160;|&#160;<a class="qindex" href="#letter_g">g</a>&#160;|&#160;<a class="qindex" href="#letter_i">i</a>&#160;|&#160;<a class="qindex" href="#letter_l">l</a>&#160;|&#160;<a class="qindex" href="#letter_m">m</a>&#160;|&#160;<a class="qindex" href="#letter_n">n</a>&#160;|&#160;<a class="qindex" href="#letter_p">p</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a>&#160;|&#160;<a class="qindex" href="#letter_s">s</a>&#160;|&#160;<a class="qindex" href="#letter_t">t</a>&#160;|&#160;<a class="qindex" href="#letter_u">u</a>&#160;|&#160;<a class="qindex" href="#letter_z">z</a></div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

View File

@ -0,0 +1,103 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/compat/posix/arpa/inet.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('compat_2posix_2arpa_2inet_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">inet.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="sockets_8h.html">lwip/sockets.h</a>&quot;</code><br />
</div><a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This file is a posix wrapper for <a class="el" href="sockets_8h.html">lwip/sockets.h</a>. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_1e445e767c368c70d58af8a0b7552719.html">compat</a></li><li class="navelem"><a class="el" href="dir_fe219fca207b878205c0dd92278d118b.html">posix</a></li><li class="navelem"><a class="el" href="dir_6b1b06896a870ebfb9c854c4c71f4ff5.html">arpa</a></li><li class="navelem"><a class="el" href="compat_2posix_2arpa_2inet_8h.html">inet.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,103 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/compat/posix/netdb.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('compat_2posix_2netdb_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">netdb.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="lwip_2netdb_8h.html">lwip/netdb.h</a>&quot;</code><br />
</div><a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This file is a posix wrapper for <a class="el" href="lwip_2netdb_8h.html">lwip/netdb.h</a>. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_1e445e767c368c70d58af8a0b7552719.html">compat</a></li><li class="navelem"><a class="el" href="dir_fe219fca207b878205c0dd92278d118b.html">posix</a></li><li class="navelem"><a class="el" href="compat_2posix_2netdb_8h.html">netdb.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,103 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/compat/stdc/errno.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('compat_2stdc_2errno_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">errno.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="lwip_2errno_8h.html">lwip/errno.h</a>&quot;</code><br />
</div><a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This file is a posix/stdc wrapper for <a class="el" href="lwip_2errno_8h.html">lwip/errno.h</a>. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_1e445e767c368c70d58af8a0b7552719.html">compat</a></li><li class="navelem"><a class="el" href="dir_b42baff89a1adc9a57da7decb1835b6b.html">stdc</a></li><li class="navelem"><a class="el" href="compat_2stdc_2errno_8h.html">errno.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,157 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: How to contribute to lwIP</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('contrib.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">How to contribute to lwIP </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><pre class="fragment">1 Introduction
This document describes some guidelines for people participating
in lwIP development.
2 How to contribute to lwIP
Here is a short list of suggestions to anybody working with lwIP and
trying to contribute bug reports, fixes, enhancements, platform ports etc.
First of all as you may already know lwIP is a volunteer project so feedback
to fixes or questions might often come late. Hopefully the bug and patch tracking
features of Savannah help us not lose users' input.
2.1 Source code style:
1. do not use tabs.
2. indentation is two spaces per level (i.e. per tab).
3. end debug messages with a trailing newline (\n).
4. one space between keyword and opening bracket.
5. no space between function and opening bracket.
6. one space and no newline before opening curly braces of a block.
7. closing curly brace on a single line.
8. spaces surrounding assignment and comparisons.
9. don't initialize static and/or global variables to zero, the compiler takes care of that.
10. use current source code style as further reference.
2.2 Source code documentation style:
1. JavaDoc compliant and Doxygen compatible.
2. Function documentation above functions in .c files, not .h files.
(This forces you to synchronize documentation and implementation.)
3. Use current documentation style as further reference.
2.3 Bug reports and patches:
1. Make sure you are reporting bugs or send patches against the latest
sources. (From the latest release and/or the current Git sources.)
2. If you think you found a bug make sure it's not already filed in the
bugtracker at Savannah.
3. If you have a fix put the patch on Savannah. If it is a patch that affects
both core and arch specific stuff please separate them so that the core can
be applied separately while leaving the other patch 'open'. The preferred way
is to NOT touch archs you can't test and let maintainers take care of them.
This is a good way to see if they are used at all - the same goes for unix
netifs except tapif.
4. Do not file a bug and post a fix to it to the patch area. Either a bug report
or a patch will be enough.
If you correct an existing bug then attach the patch to the bug rather than creating a new entry in the patch area.
5. Patches should be specific to a single change or to related changes. Do not mix bugfixes with spelling and other
trivial fixes unless the bugfix is trivial too. Do not reorganize code and rename identifiers in the same patch you
change behaviour if not necessary. A patch is easier to read and understand if it's to the point and short than
if it's not to the point and long :) so the chances for it to be applied are greater.
2.4 Platform porters:
1. If you have ported lwIP to a platform (an OS, a uC/processor or a combination of these) and
you think it could benefit others[1] you might want discuss this on the mailing list. You
can also ask for Git access to submit and maintain your port in the contrib Git module.
</pre> </div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,153 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/debug.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('debug_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> </div>
<div class="headertitle">
<div class="title">debug.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="arch_8h.html">lwip/arch.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga71b7787802abbfc2218fb1f39f948a41"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__lwip__assertions.html#ga71b7787802abbfc2218fb1f39f948a41">LWIP_NOASSERT</a></td></tr>
<tr class="separator:ga71b7787802abbfc2218fb1f39f948a41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a957d947c94fda9b85d4aee0aab72952a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="debug_8h.html#a957d947c94fda9b85d4aee0aab72952a">LWIP_DEBUG</a></td></tr>
<tr class="separator:a957d947c94fda9b85d4aee0aab72952a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Debug level (LWIP_DBG_MIN_LEVEL)</div></td></tr>
<tr class="memitem:ga8ebaeb006b43f55897f3196b3617dc87"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__debugging__levels.html#ga8ebaeb006b43f55897f3196b3617dc87">LWIP_DBG_LEVEL_ALL</a>&#160;&#160;&#160;0x00</td></tr>
<tr class="separator:ga8ebaeb006b43f55897f3196b3617dc87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga77c491e468bf7d9a1bc48430c1866a96"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__debugging__levels.html#ga77c491e468bf7d9a1bc48430c1866a96">LWIP_DBG_LEVEL_WARNING</a>&#160;&#160;&#160;0x01</td></tr>
<tr class="separator:ga77c491e468bf7d9a1bc48430c1866a96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0269bdc51f1e8a5ecf9af72c6e1c996c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__debugging__levels.html#ga0269bdc51f1e8a5ecf9af72c6e1c996c">LWIP_DBG_LEVEL_SERIOUS</a>&#160;&#160;&#160;0x02</td></tr>
<tr class="separator:ga0269bdc51f1e8a5ecf9af72c6e1c996c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaab41143277cd38047b6660d90e9cec3b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__debugging__levels.html#gaab41143277cd38047b6660d90e9cec3b">LWIP_DBG_LEVEL_SEVERE</a>&#160;&#160;&#160;0x03</td></tr>
<tr class="separator:gaab41143277cd38047b6660d90e9cec3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Enable/disable debug messages completely (LWIP_DBG_TYPES_ON)</div></td></tr>
<tr class="memitem:ga9e31b7cbbc8f46af8e62b548079acd4e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__debugging__levels.html#ga9e31b7cbbc8f46af8e62b548079acd4e">LWIP_DBG_ON</a>&#160;&#160;&#160;0x80U</td></tr>
<tr class="separator:ga9e31b7cbbc8f46af8e62b548079acd4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadab1cdc3f45939a3a5c9a3d7e04987e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__debugging__levels.html#gadab1cdc3f45939a3a5c9a3d7e04987e1">LWIP_DBG_OFF</a>&#160;&#160;&#160;0x00U</td></tr>
<tr class="separator:gadab1cdc3f45939a3a5c9a3d7e04987e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Debug message types (LWIP_DBG_TYPES_ON)</div></td></tr>
<tr class="memitem:ga988147559b78642ac881815b66023646"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__debugging__levels.html#ga988147559b78642ac881815b66023646">LWIP_DBG_TRACE</a>&#160;&#160;&#160;0x40U</td></tr>
<tr class="separator:ga988147559b78642ac881815b66023646"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga511ee3deb3240635f5ec6a1709c6d741"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__debugging__levels.html#ga511ee3deb3240635f5ec6a1709c6d741">LWIP_DBG_STATE</a>&#160;&#160;&#160;0x20U</td></tr>
<tr class="separator:ga511ee3deb3240635f5ec6a1709c6d741"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7d44d1804fa5e747aed86816e2a6cae0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__debugging__levels.html#ga7d44d1804fa5e747aed86816e2a6cae0">LWIP_DBG_FRESH</a>&#160;&#160;&#160;0x10U</td></tr>
<tr class="separator:ga7d44d1804fa5e747aed86816e2a6cae0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab0a296414983155b30ad51871606b90f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__debugging__levels.html#gab0a296414983155b30ad51871606b90f">LWIP_DBG_HALT</a>&#160;&#160;&#160;0x08U</td></tr>
<tr class="separator:gab0a296414983155b30ad51871606b90f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Debug messages infrastructure </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a957d947c94fda9b85d4aee0aab72952a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a957d947c94fda9b85d4aee0aab72952a">&#9670;&nbsp;</a></span>LWIP_DEBUG</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LWIP_DEBUG</td>
</tr>
</table>
</div><div class="memdoc">
<p>Enable debug message printing, but only if debug message type is enabled AND is of correct type AND is at least LWIP_DBG_LEVEL. </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="debug_8h.html">debug.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,15 @@
var debug_8h =
[
[ "LWIP_DBG_FRESH", "group__debugging__levels.html#ga7d44d1804fa5e747aed86816e2a6cae0", null ],
[ "LWIP_DBG_HALT", "group__debugging__levels.html#gab0a296414983155b30ad51871606b90f", null ],
[ "LWIP_DBG_LEVEL_ALL", "group__debugging__levels.html#ga8ebaeb006b43f55897f3196b3617dc87", null ],
[ "LWIP_DBG_LEVEL_SERIOUS", "group__debugging__levels.html#ga0269bdc51f1e8a5ecf9af72c6e1c996c", null ],
[ "LWIP_DBG_LEVEL_SEVERE", "group__debugging__levels.html#gaab41143277cd38047b6660d90e9cec3b", null ],
[ "LWIP_DBG_LEVEL_WARNING", "group__debugging__levels.html#ga77c491e468bf7d9a1bc48430c1866a96", null ],
[ "LWIP_DBG_OFF", "group__debugging__levels.html#gadab1cdc3f45939a3a5c9a3d7e04987e1", null ],
[ "LWIP_DBG_ON", "group__debugging__levels.html#ga9e31b7cbbc8f46af8e62b548079acd4e", null ],
[ "LWIP_DBG_STATE", "group__debugging__levels.html#ga511ee3deb3240635f5ec6a1709c6d741", null ],
[ "LWIP_DBG_TRACE", "group__debugging__levels.html#ga988147559b78642ac881815b66023646", null ],
[ "LWIP_DEBUG", "debug_8h.html#a957d947c94fda9b85d4aee0aab72952a", null ],
[ "LWIP_NOASSERT", "group__lwip__assertions.html#ga71b7787802abbfc2218fb1f39f948a41", null ]
];

View File

@ -0,0 +1,180 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/core/def.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('def_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">def.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="def_8h.html">lwip/def.h</a>&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ad637280639de4066392e6b5614fa3e56"><td class="memItemLeft" align="right" valign="top">u16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="def_8c.html#ad637280639de4066392e6b5614fa3e56">lwip_htons</a> (u16_t n)</td></tr>
<tr class="separator:ad637280639de4066392e6b5614fa3e56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14f94347a5b9b9e3602705b75b7ae524"><td class="memItemLeft" align="right" valign="top">u32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="def_8c.html#a14f94347a5b9b9e3602705b75b7ae524">lwip_htonl</a> (u32_t n)</td></tr>
<tr class="separator:a14f94347a5b9b9e3602705b75b7ae524"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeece028198cdaea2f0d2f1d691752c02"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__nonstandard.html#gaeece028198cdaea2f0d2f1d691752c02">lwip_strnstr</a> (const char *buffer, const char *token, size_t n)</td></tr>
<tr class="separator:gaeece028198cdaea2f0d2f1d691752c02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga263cbafcb697eff964139a9998a6668a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__nonstandard.html#ga263cbafcb697eff964139a9998a6668a">lwip_stricmp</a> (const char *str1, const char *str2)</td></tr>
<tr class="separator:ga263cbafcb697eff964139a9998a6668a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga997dcc49451121d4ed755b33bc7bd26a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__nonstandard.html#ga997dcc49451121d4ed755b33bc7bd26a">lwip_strnicmp</a> (const char *str1, const char *str2, size_t len)</td></tr>
<tr class="separator:ga997dcc49451121d4ed755b33bc7bd26a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf15b4fbaaae5bb7f6da4301f3f979284"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__nonstandard.html#gaf15b4fbaaae5bb7f6da4301f3f979284">lwip_itoa</a> (char *result, size_t bufsize, int number)</td></tr>
<tr class="separator:gaf15b4fbaaae5bb7f6da4301f3f979284"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Common functions used throughout the stack.</p>
<p>These are reference implementations of the byte swapping functions. Again with the aim of being simple, correct and fully portable. Byte swapping is the second thing you would want to optimize. You will need to port it to your architecture and in your cc.h:</p>
<p>#define lwip_htons(x) your_htons #define lwip_htonl(x) your_htonl</p>
<p>Note lwip_ntohs() and lwip_ntohl() are merely references to the htonx counterparts.</p>
<p>If you #define them to htons() and htonl(), you should #define LWIP_DONT_PROVIDE_BYTEORDER_FUNCTIONS to prevent lwIP from defining htonx/ntohx compatibility macros. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a14f94347a5b9b9e3602705b75b7ae524"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a14f94347a5b9b9e3602705b75b7ae524">&#9670;&nbsp;</a></span>lwip_htonl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u32_t lwip_htonl </td>
<td>(</td>
<td class="paramtype">u32_t&#160;</td>
<td class="paramname"><em>n</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert an u32_t from host- to network byte order.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">n</td><td>u32_t in host byte order </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>n in network byte order </dd></dl>
</div>
</div>
<a id="ad637280639de4066392e6b5614fa3e56"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad637280639de4066392e6b5614fa3e56">&#9670;&nbsp;</a></span>lwip_htons()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u16_t lwip_htons </td>
<td>(</td>
<td class="paramtype">u16_t&#160;</td>
<td class="paramname"><em>n</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert an u16_t from host- to network byte order.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">n</td><td>u16_t in host byte order </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>n in network byte order </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_aebb8dcc11953d78e620bbef0b9e2183.html">core</a></li><li class="navelem"><a class="el" href="def_8c.html">def.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,9 @@
var def_8c =
[
[ "lwip_htonl", "def_8c.html#a14f94347a5b9b9e3602705b75b7ae524", null ],
[ "lwip_htons", "def_8c.html#ad637280639de4066392e6b5614fa3e56", null ],
[ "lwip_itoa", "group__sys__nonstandard.html#gaf15b4fbaaae5bb7f6da4301f3f979284", null ],
[ "lwip_stricmp", "group__sys__nonstandard.html#ga263cbafcb697eff964139a9998a6668a", null ],
[ "lwip_strnicmp", "group__sys__nonstandard.html#ga997dcc49451121d4ed755b33bc7bd26a", null ],
[ "lwip_strnstr", "group__sys__nonstandard.html#gaeece028198cdaea2f0d2f1d691752c02", null ]
];

View File

@ -0,0 +1,223 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/def.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('def_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">def.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="arch_8h.html">lwip/arch.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:acf56d3da92a0a7a8a62a617e793e948c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="def_8h.html#acf56d3da92a0a7a8a62a617e793e948c">LWIP_MAKEU32</a>(a, b, c, d)</td></tr>
<tr class="separator:acf56d3da92a0a7a8a62a617e793e948c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ac49eb25570806fb51c329d4f86302cc2"><td class="memItemLeft" align="right" valign="top">u16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="def_8h.html#ac49eb25570806fb51c329d4f86302cc2">lwip_htons</a> (u16_t x)</td></tr>
<tr class="separator:ac49eb25570806fb51c329d4f86302cc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95e391e860b519b4f4f5c4979c9c9a37"><td class="memItemLeft" align="right" valign="top">u32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="def_8h.html#a95e391e860b519b4f4f5c4979c9c9a37">lwip_htonl</a> (u32_t x)</td></tr>
<tr class="separator:a95e391e860b519b4f4f5c4979c9c9a37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf15b4fbaaae5bb7f6da4301f3f979284"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__nonstandard.html#gaf15b4fbaaae5bb7f6da4301f3f979284">lwip_itoa</a> (char *result, size_t bufsize, int number)</td></tr>
<tr class="separator:gaf15b4fbaaae5bb7f6da4301f3f979284"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga997dcc49451121d4ed755b33bc7bd26a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__nonstandard.html#ga997dcc49451121d4ed755b33bc7bd26a">lwip_strnicmp</a> (const char *str1, const char *str2, size_t len)</td></tr>
<tr class="separator:ga997dcc49451121d4ed755b33bc7bd26a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga263cbafcb697eff964139a9998a6668a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__nonstandard.html#ga263cbafcb697eff964139a9998a6668a">lwip_stricmp</a> (const char *str1, const char *str2)</td></tr>
<tr class="separator:ga263cbafcb697eff964139a9998a6668a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeece028198cdaea2f0d2f1d691752c02"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sys__nonstandard.html#gaeece028198cdaea2f0d2f1d691752c02">lwip_strnstr</a> (const char *buffer, const char *token, size_t n)</td></tr>
<tr class="separator:gaeece028198cdaea2f0d2f1d691752c02"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>various utility macros </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="acf56d3da92a0a7a8a62a617e793e948c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf56d3da92a0a7a8a62a617e793e948c">&#9670;&nbsp;</a></span>LWIP_MAKEU32</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define LWIP_MAKEU32</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">a, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">b, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">c, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">d&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(((u32_t)((a) &amp; 0xff) &lt;&lt; 24) | \</div><div class="line"> ((u32_t)((b) &amp; 0xff) &lt;&lt; 16) | \</div><div class="line"> ((u32_t)((c) &amp; 0xff) &lt;&lt; 8) | \</div><div class="line"> (u32_t)((d) &amp; 0xff))</div></div><!-- fragment --><p>Create u32_t value from bytes </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a95e391e860b519b4f4f5c4979c9c9a37"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95e391e860b519b4f4f5c4979c9c9a37">&#9670;&nbsp;</a></span>lwip_htonl()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u32_t lwip_htonl </td>
<td>(</td>
<td class="paramtype">u32_t&#160;</td>
<td class="paramname"><em>n</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert an u32_t from host- to network byte order.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">n</td><td>u32_t in host byte order </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>n in network byte order </dd></dl>
</div>
</div>
<a id="ac49eb25570806fb51c329d4f86302cc2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac49eb25570806fb51c329d4f86302cc2">&#9670;&nbsp;</a></span>lwip_htons()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u16_t lwip_htons </td>
<td>(</td>
<td class="paramtype">u16_t&#160;</td>
<td class="paramname"><em>n</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Convert an u16_t from host- to network byte order.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">n</td><td>u16_t in host byte order </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>n in network byte order </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="def_8h.html">def.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,10 @@
var def_8h =
[
[ "LWIP_MAKEU32", "def_8h.html#acf56d3da92a0a7a8a62a617e793e948c", null ],
[ "lwip_htonl", "def_8h.html#a95e391e860b519b4f4f5c4979c9c9a37", null ],
[ "lwip_htons", "def_8h.html#ac49eb25570806fb51c329d4f86302cc2", null ],
[ "lwip_itoa", "group__sys__nonstandard.html#gaf15b4fbaaae5bb7f6da4301f3f979284", null ],
[ "lwip_stricmp", "group__sys__nonstandard.html#ga263cbafcb697eff964139a9998a6668a", null ],
[ "lwip_strnicmp", "group__sys__nonstandard.html#ga997dcc49451121d4ed755b33bc7bd26a", null ],
[ "lwip_strnstr", "group__sys__nonstandard.html#gaeece028198cdaea2f0d2f1d691752c02", null ]
];

View File

@ -0,0 +1,111 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: Deprecated List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('deprecated.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Deprecated List </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><dl class="reflist">
<dt><a class="anchor" id="_deprecated000001"></a>Global <a class="el" href="group__dhcp4.html#gaf92f7afb58252f82a749064602974bd4">dhcp_release</a> (struct netif *netif)</dt>
<dd>Use <a class="el" href="group__dhcp4.html#gaf7cd42b9f220446b6a597d3474da6ece">dhcp_release_and_stop()</a> instead. </dd>
<dt><a class="anchor" id="_deprecated000002"></a>Global <a class="el" href="group__dhcp4.html#ga93f6bf21086dc9b10c0bec4676f97312">dhcp_stop</a> (struct netif *netif)</dt>
<dd>Use <a class="el" href="group__dhcp4.html#gaf7cd42b9f220446b6a597d3474da6ece">dhcp_release_and_stop()</a> instead. </dd>
<dt><a class="anchor" id="_deprecated000004"></a>Global <a class="el" href="group__netifapi__dhcp4.html#ga5aeaee24c11128df90a56fe091c9d409">netifapi_dhcp_release</a> (n)</dt>
<dd>Use <a class="el" href="group__netifapi__dhcp4.html#ga1971af04f882f5afdb3ade454a680134">netifapi_dhcp_release_and_stop()</a> instead. </dd>
<dt><a class="anchor" id="_deprecated000003"></a>Global <a class="el" href="group__netifapi__dhcp4.html#ga2322c0d0e3eb6c1097d6f3942905dbd5">netifapi_dhcp_stop</a> (n)</dt>
<dd>Use <a class="el" href="group__netifapi__dhcp4.html#ga1971af04f882f5afdb3ade454a680134">netifapi_dhcp_release_and_stop()</a> instead. </dd>
<dt><a class="anchor" id="_deprecated000005"></a>Global <a class="el" href="group__lwip__os.html#gacd0a865623921ada2dd08962eb82c9df">tcpip_callback_with_block</a> (function, ctx, block)</dt>
<dd>use <a class="el" href="group__lwip__os.html#gaeb7b3c7414c76ad8dde14d2fba6cb020">tcpip_try_callback()</a> or <a class="el" href="group__lwip__os.html#gaab838fe3417ab3a1f61f0728009a0c2a">tcpip_callback()</a> instead </dd>
</dl>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,228 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/core/ipv6/dhcp6.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('dhcp6_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">dhcp6.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="dhcp6_8h.html">lwip/dhcp6.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="prot_2dhcp6_8h.html">lwip/prot/dhcp6.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="def_8h.html">lwip/def.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="udp_8h.html">lwip/udp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="dns_8h.html">lwip/dns.h</a>&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
<code>#include &quot;path/to/my/lwip_hooks.h&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ac4c519a2e10067f277d6b09e60919e9a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp6_8c.html#ac4c519a2e10067f277d6b09e60919e9a">dhcp6_option_idx</a> </td></tr>
<tr class="separator:ac4c519a2e10067f277d6b09e60919e9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga5cdf4082c8a4ee6bf0cb874c0eaa8453"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp6.html#ga5cdf4082c8a4ee6bf0cb874c0eaa8453">dhcp6_set_struct</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, struct dhcp6 *dhcp6)</td></tr>
<tr class="separator:ga5cdf4082c8a4ee6bf0cb874c0eaa8453"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacb7042000509fb21e8d2758e235d6dde"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp6.html#gacb7042000509fb21e8d2758e235d6dde">dhcp6_cleanup</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gacb7042000509fb21e8d2758e235d6dde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa9e972fcd1d648ca5f02334b1591b619"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp6.html#gaa9e972fcd1d648ca5f02334b1591b619">dhcp6_enable_stateful</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gaa9e972fcd1d648ca5f02334b1591b619"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf3349463541e673fec33843eb019b18c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp6.html#gaf3349463541e673fec33843eb019b18c">dhcp6_enable_stateless</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gaf3349463541e673fec33843eb019b18c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadd0c783a85a410f75b37a3d922ad60d2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp6.html#gadd0c783a85a410f75b37a3d922ad60d2">dhcp6_disable</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gadd0c783a85a410f75b37a3d922ad60d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0f47aac3c04c84a7143fa6925e9fdba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp6_8c.html#af0f47aac3c04c84a7143fa6925e9fdba">dhcp6_nd6_ra_trigger</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, u8_t managed_addr_config, u8_t other_config)</td></tr>
<tr class="separator:af0f47aac3c04c84a7143fa6925e9fdba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5289027cb2b166d08bc55b7ed2d4756d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp6_8c.html#a5289027cb2b166d08bc55b7ed2d4756d">dhcp6_tmr</a> (void)</td></tr>
<tr class="separator:a5289027cb2b166d08bc55b7ed2d4756d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:abcce06f078da4b03265d20c0bc1bdce0"><td class="memItemLeft" align="right" valign="top">struct dhcp6_option_info&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp6_8c.html#abcce06f078da4b03265d20c0bc1bdce0">dhcp6_rx_options</a> [DHCP6_OPTION_IDX_MAX]</td></tr>
<tr class="separator:abcce06f078da4b03265d20c0bc1bdce0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="ac4c519a2e10067f277d6b09e60919e9a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac4c519a2e10067f277d6b09e60919e9a">&#9670;&nbsp;</a></span>dhcp6_option_idx</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="dhcp6_8c.html#ac4c519a2e10067f277d6b09e60919e9a">dhcp6_option_idx</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Option handling: options are parsed in dhcp6_parse_reply and saved in an array where other functions can load them from. This might be moved into the struct dhcp6 (not necessarily since lwIP is single-threaded and the array is only used while in recv callback). </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="af0f47aac3c04c84a7143fa6925e9fdba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0f47aac3c04c84a7143fa6925e9fdba">&#9670;&nbsp;</a></span>dhcp6_nd6_ra_trigger()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dhcp6_nd6_ra_trigger </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>managed_addr_config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>other_config</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function is called from nd6 module when an RA messsage is received It triggers DHCPv6 requests (if enabled). </p>
</div>
</div>
<a id="a5289027cb2b166d08bc55b7ed2d4756d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5289027cb2b166d08bc55b7ed2d4756d">&#9670;&nbsp;</a></span>dhcp6_tmr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dhcp6_tmr </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>DHCPv6 timeout handling (this function must be called every 500ms, see <a class="el" href="dhcp6_8h.html#afdd69327dc7d9f5cc4f029d706f60c8f">DHCP6_TIMER_MSECS</a>).</p>
<p>A DHCPv6 server is expected to respond within a short period of time. This timer checks whether an outstanding DHCPv6 request is timed out. </p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="abcce06f078da4b03265d20c0bc1bdce0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcce06f078da4b03265d20c0bc1bdce0">&#9670;&nbsp;</a></span>dhcp6_rx_options</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct dhcp6_option_info dhcp6_rx_options[DHCP6_OPTION_IDX_MAX]</td>
</tr>
</table>
</div><div class="memdoc">
<p>Holds the decoded option info, only valid while in dhcp6_recv. </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_aebb8dcc11953d78e620bbef0b9e2183.html">core</a></li><li class="navelem"><a class="el" href="dir_da9c6f43d3cd00be3de224bac907a425.html">ipv6</a></li><li class="navelem"><a class="el" href="dhcp6_8c.html">dhcp6.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,12 @@
var dhcp6_8c =
[
[ "dhcp6_option_idx", "dhcp6_8c.html#ac4c519a2e10067f277d6b09e60919e9a", null ],
[ "dhcp6_cleanup", "group__dhcp6.html#gacb7042000509fb21e8d2758e235d6dde", null ],
[ "dhcp6_disable", "group__dhcp6.html#gadd0c783a85a410f75b37a3d922ad60d2", null ],
[ "dhcp6_enable_stateful", "group__dhcp6.html#gaa9e972fcd1d648ca5f02334b1591b619", null ],
[ "dhcp6_enable_stateless", "group__dhcp6.html#gaf3349463541e673fec33843eb019b18c", null ],
[ "dhcp6_nd6_ra_trigger", "dhcp6_8c.html#af0f47aac3c04c84a7143fa6925e9fdba", null ],
[ "dhcp6_set_struct", "group__dhcp6.html#ga5cdf4082c8a4ee6bf0cb874c0eaa8453", null ],
[ "dhcp6_tmr", "dhcp6_8c.html#a5289027cb2b166d08bc55b7ed2d4756d", null ],
[ "dhcp6_rx_options", "dhcp6_8c.html#abcce06f078da4b03265d20c0bc1bdce0", null ]
];

View File

@ -0,0 +1,224 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/dhcp6.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('dhcp6_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">dhcp6.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="err_8h.html">lwip/err.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="netif_8h.html">lwip/netif.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:afdd69327dc7d9f5cc4f029d706f60c8f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp6_8h.html#afdd69327dc7d9f5cc4f029d706f60c8f">DHCP6_TIMER_MSECS</a>&#160;&#160;&#160;500</td></tr>
<tr class="separator:afdd69327dc7d9f5cc4f029d706f60c8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76941ddba22fe00dfc47d2f339f7aca3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp6_8h.html#a76941ddba22fe00dfc47d2f339f7aca3">dhcp6_remove_struct</a>(<a class="el" href="structnetif.html">netif</a>)&#160;&#160;&#160;<a class="el" href="group__netif__cd.html#ga5ce61a277e1951183f7b7d03742c231f">netif_set_client_data</a>(<a class="el" href="structnetif.html">netif</a>, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP6, NULL)</td></tr>
<tr class="separator:a76941ddba22fe00dfc47d2f339f7aca3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga5cdf4082c8a4ee6bf0cb874c0eaa8453"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp6.html#ga5cdf4082c8a4ee6bf0cb874c0eaa8453">dhcp6_set_struct</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, struct dhcp6 *dhcp6)</td></tr>
<tr class="separator:ga5cdf4082c8a4ee6bf0cb874c0eaa8453"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacb7042000509fb21e8d2758e235d6dde"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp6.html#gacb7042000509fb21e8d2758e235d6dde">dhcp6_cleanup</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gacb7042000509fb21e8d2758e235d6dde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa9e972fcd1d648ca5f02334b1591b619"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp6.html#gaa9e972fcd1d648ca5f02334b1591b619">dhcp6_enable_stateful</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gaa9e972fcd1d648ca5f02334b1591b619"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf3349463541e673fec33843eb019b18c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp6.html#gaf3349463541e673fec33843eb019b18c">dhcp6_enable_stateless</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gaf3349463541e673fec33843eb019b18c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadd0c783a85a410f75b37a3d922ad60d2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp6.html#gadd0c783a85a410f75b37a3d922ad60d2">dhcp6_disable</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gadd0c783a85a410f75b37a3d922ad60d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5289027cb2b166d08bc55b7ed2d4756d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp6_8h.html#a5289027cb2b166d08bc55b7ed2d4756d">dhcp6_tmr</a> (void)</td></tr>
<tr class="separator:a5289027cb2b166d08bc55b7ed2d4756d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0f47aac3c04c84a7143fa6925e9fdba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp6_8h.html#af0f47aac3c04c84a7143fa6925e9fdba">dhcp6_nd6_ra_trigger</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, u8_t managed_addr_config, u8_t other_config)</td></tr>
<tr class="separator:af0f47aac3c04c84a7143fa6925e9fdba"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>DHCPv6 client: IPv6 address autoconfiguration as per RFC 3315 (stateful DHCPv6) and RFC 3736 (stateless DHCPv6). </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a76941ddba22fe00dfc47d2f339f7aca3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a76941ddba22fe00dfc47d2f339f7aca3">&#9670;&nbsp;</a></span>dhcp6_remove_struct</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define dhcp6_remove_struct</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><a class="el" href="structnetif.html">netif</a></td><td>)</td>
<td>&#160;&#160;&#160;<a class="el" href="group__netif__cd.html#ga5ce61a277e1951183f7b7d03742c231f">netif_set_client_data</a>(<a class="el" href="structnetif.html">netif</a>, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP6, NULL)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove a struct dhcp6 previously set to the netif using <a class="el" href="group__dhcp6.html#ga5cdf4082c8a4ee6bf0cb874c0eaa8453">dhcp6_set_struct()</a> </p>
</div>
</div>
<a id="afdd69327dc7d9f5cc4f029d706f60c8f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afdd69327dc7d9f5cc4f029d706f60c8f">&#9670;&nbsp;</a></span>DHCP6_TIMER_MSECS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DHCP6_TIMER_MSECS&#160;&#160;&#160;500</td>
</tr>
</table>
</div><div class="memdoc">
<p>period (in milliseconds) of the application calling <a class="el" href="dhcp6_8h.html#a5289027cb2b166d08bc55b7ed2d4756d">dhcp6_tmr()</a> </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="af0f47aac3c04c84a7143fa6925e9fdba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0f47aac3c04c84a7143fa6925e9fdba">&#9670;&nbsp;</a></span>dhcp6_nd6_ra_trigger()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dhcp6_nd6_ra_trigger </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>managed_addr_config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>other_config</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function is called from nd6 module when an RA messsage is received It triggers DHCPv6 requests (if enabled). </p>
</div>
</div>
<a id="a5289027cb2b166d08bc55b7ed2d4756d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5289027cb2b166d08bc55b7ed2d4756d">&#9670;&nbsp;</a></span>dhcp6_tmr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dhcp6_tmr </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>DHCPv6 timeout handling (this function must be called every 500ms, see <a class="el" href="dhcp6_8h.html#afdd69327dc7d9f5cc4f029d706f60c8f">DHCP6_TIMER_MSECS</a>).</p>
<p>A DHCPv6 server is expected to respond within a short period of time. This timer checks whether an outstanding DHCPv6 request is timed out. </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="dhcp6_8h.html">dhcp6.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,12 @@
var dhcp6_8h =
[
[ "dhcp6_remove_struct", "dhcp6_8h.html#a76941ddba22fe00dfc47d2f339f7aca3", null ],
[ "DHCP6_TIMER_MSECS", "dhcp6_8h.html#afdd69327dc7d9f5cc4f029d706f60c8f", null ],
[ "dhcp6_cleanup", "group__dhcp6.html#gacb7042000509fb21e8d2758e235d6dde", null ],
[ "dhcp6_disable", "group__dhcp6.html#gadd0c783a85a410f75b37a3d922ad60d2", null ],
[ "dhcp6_enable_stateful", "group__dhcp6.html#gaa9e972fcd1d648ca5f02334b1591b619", null ],
[ "dhcp6_enable_stateless", "group__dhcp6.html#gaf3349463541e673fec33843eb019b18c", null ],
[ "dhcp6_nd6_ra_trigger", "dhcp6_8h.html#af0f47aac3c04c84a7143fa6925e9fdba", null ],
[ "dhcp6_set_struct", "group__dhcp6.html#ga5cdf4082c8a4ee6bf0cb874c0eaa8453", null ],
[ "dhcp6_tmr", "dhcp6_8h.html#a5289027cb2b166d08bc55b7ed2d4756d", null ]
];

View File

@ -0,0 +1,392 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/core/ipv4/dhcp.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('dhcp_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">dhcp.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="stats_8h.html">lwip/stats.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="mem_8h.html">lwip/mem.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="udp_8h.html">lwip/udp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ip__addr_8h.html">lwip/ip_addr.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="netif_8h.html">lwip/netif.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="def_8h.html">lwip/def.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="dhcp_8h.html">lwip/dhcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="autoip_8h.html">lwip/autoip.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="dns_8h.html">lwip/dns.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="lwip_2etharp_8h.html">lwip/etharp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="prot_2dhcp_8h.html">lwip/prot/dhcp.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="iana_8h.html">lwip/prot/iana.h</a>&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
<code>#include &quot;path/to/my/lwip_hooks.h&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ad6de9c5120654454a330bf5de53c4835"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8c.html#ad6de9c5120654454a330bf5de53c4835">DHCP_CREATE_RAND_XID</a>&#160;&#160;&#160;1</td></tr>
<tr class="separator:ad6de9c5120654454a330bf5de53c4835"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63e9ec4517b80d8576f218d905e31a9b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8c.html#a63e9ec4517b80d8576f218d905e31a9b">DHCP_MAX_MSG_LEN</a>(<a class="el" href="structnetif.html">netif</a>)&#160;&#160;&#160;(<a class="el" href="structnetif.html">netif</a>-&gt;mtu)</td></tr>
<tr class="separator:a63e9ec4517b80d8576f218d905e31a9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa52c2b64ef42fbad84a3bcd58052caab"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8c.html#aa52c2b64ef42fbad84a3bcd58052caab">DHCP_MIN_REPLY_LEN</a>&#160;&#160;&#160;44</td></tr>
<tr class="separator:aa52c2b64ef42fbad84a3bcd58052caab"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a8c3b584d223b995b48613ad96cb776a0"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8c.html#a8c3b584d223b995b48613ad96cb776a0">dhcp_option_idx</a> </td></tr>
<tr class="separator:a8c3b584d223b995b48613ad96cb776a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ad7480883d64f3d6f083c8aa933b5e3cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8c.html#ad7480883d64f3d6f083c8aa933b5e3cb">dhcp_coarse_tmr</a> (void)</td></tr>
<tr class="separator:ad7480883d64f3d6f083c8aa933b5e3cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a601d97faa24fa7289244bb452f052045"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8c.html#a601d97faa24fa7289244bb452f052045">dhcp_fine_tmr</a> (void)</td></tr>
<tr class="separator:a601d97faa24fa7289244bb452f052045"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga43812097832716a462c660eb59cc1bf8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga43812097832716a462c660eb59cc1bf8">dhcp_set_struct</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, struct dhcp *dhcp)</td></tr>
<tr class="separator:ga43812097832716a462c660eb59cc1bf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga292a1b0c0c288ec508108a3fba473e64"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga292a1b0c0c288ec508108a3fba473e64">dhcp_cleanup</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga292a1b0c0c288ec508108a3fba473e64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0c50968d9811aa2aa67fadc0885d744f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga0c50968d9811aa2aa67fadc0885d744f">dhcp_start</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga0c50968d9811aa2aa67fadc0885d744f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabd7fcc7e0799e313885fc7fd9d4992ad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#gabd7fcc7e0799e313885fc7fd9d4992ad">dhcp_inform</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gabd7fcc7e0799e313885fc7fd9d4992ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04f3824720223c439165243527906002"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8c.html#a04f3824720223c439165243527906002">dhcp_network_changed</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:a04f3824720223c439165243527906002"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1fc0a94e0b94f13c5d302018f7ecb535"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8c.html#a1fc0a94e0b94f13c5d302018f7ecb535">dhcp_arp_reply</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, const <a class="el" href="ip4__addr_8h.html#a3d3b45daffbc15d65da236e31e621b7e">ip4_addr_t</a> *addr)</td></tr>
<tr class="separator:a1fc0a94e0b94f13c5d302018f7ecb535"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga583eb8d58f5e96b7dea717948578a947"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga583eb8d58f5e96b7dea717948578a947">dhcp_renew</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga583eb8d58f5e96b7dea717948578a947"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf7cd42b9f220446b6a597d3474da6ece"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#gaf7cd42b9f220446b6a597d3474da6ece">dhcp_release_and_stop</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gaf7cd42b9f220446b6a597d3474da6ece"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf92f7afb58252f82a749064602974bd4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#gaf92f7afb58252f82a749064602974bd4">dhcp_release</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gaf92f7afb58252f82a749064602974bd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga93f6bf21086dc9b10c0bec4676f97312"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga93f6bf21086dc9b10c0bec4676f97312">dhcp_stop</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga93f6bf21086dc9b10c0bec4676f97312"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae24a2529372218327ab9cb6592041c85"><td class="memItemLeft" align="right" valign="top">u8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8c.html#ae24a2529372218327ab9cb6592041c85">dhcp_supplied_address</a> (const struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ae24a2529372218327ab9cb6592041c85"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a5abd232496063bddcbc6692c0e8f9c1f"><td class="memItemLeft" align="right" valign="top">u32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8c.html#a5abd232496063bddcbc6692c0e8f9c1f">dhcp_rx_options_val</a> [DHCP_OPTION_IDX_MAX]</td></tr>
<tr class="separator:a5abd232496063bddcbc6692c0e8f9c1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a058b71e1d26b3758b29d16d9f892c8cc"><td class="memItemLeft" align="right" valign="top">u8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8c.html#a058b71e1d26b3758b29d16d9f892c8cc">dhcp_rx_options_given</a> [DHCP_OPTION_IDX_MAX]</td></tr>
<tr class="separator:a058b71e1d26b3758b29d16d9f892c8cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Dynamic Host Configuration Protocol client </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ad6de9c5120654454a330bf5de53c4835"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad6de9c5120654454a330bf5de53c4835">&#9670;&nbsp;</a></span>DHCP_CREATE_RAND_XID</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DHCP_CREATE_RAND_XID&#160;&#160;&#160;1</td>
</tr>
</table>
</div><div class="memdoc">
<p>DHCP_CREATE_RAND_XID: if this is set to 1, the xid is created using <a class="el" href="group__compiler__abstraction.html#ga77370c377781ee7489e30eaf772ea05a">LWIP_RAND()</a> (this overrides DHCP_GLOBAL_XID) </p>
</div>
</div>
<a id="a63e9ec4517b80d8576f218d905e31a9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63e9ec4517b80d8576f218d905e31a9b">&#9670;&nbsp;</a></span>DHCP_MAX_MSG_LEN</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DHCP_MAX_MSG_LEN</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><a class="el" href="structnetif.html">netif</a></td><td>)</td>
<td>&#160;&#160;&#160;(<a class="el" href="structnetif.html">netif</a>-&gt;mtu)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Default for DHCP_GLOBAL_XID is 0xABCD0000 This can be changed by defining DHCP_GLOBAL_XID and DHCP_GLOBAL_XID_HEADER, e.g. #define DHCP_GLOBAL_XID_HEADER "stdlib.h" #define DHCP_GLOBAL_XID rand() DHCP_OPTION_MAX_MSG_SIZE is set to the MTU MTU is checked to be big enough in dhcp_start </p>
</div>
</div>
<a id="aa52c2b64ef42fbad84a3bcd58052caab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa52c2b64ef42fbad84a3bcd58052caab">&#9670;&nbsp;</a></span>DHCP_MIN_REPLY_LEN</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DHCP_MIN_REPLY_LEN&#160;&#160;&#160;44</td>
</tr>
</table>
</div><div class="memdoc">
<p>Minimum length for reply before packet is parsed </p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="a8c3b584d223b995b48613ad96cb776a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c3b584d223b995b48613ad96cb776a0">&#9670;&nbsp;</a></span>dhcp_option_idx</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="dhcp_8c.html#a8c3b584d223b995b48613ad96cb776a0">dhcp_option_idx</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Option handling: options are parsed in dhcp_parse_reply and saved in an array where other functions can load them from. This might be moved into the struct dhcp (not necessarily since lwIP is single-threaded and the array is only used while in recv callback). </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a1fc0a94e0b94f13c5d302018f7ecb535"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1fc0a94e0b94f13c5d302018f7ecb535">&#9670;&nbsp;</a></span>dhcp_arp_reply()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dhcp_arp_reply </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="ip4__addr_8h.html#a3d3b45daffbc15d65da236e31e621b7e">ip4_addr_t</a> *&#160;</td>
<td class="paramname"><em>addr</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Match an ARP reply with the offered IP address: check whether the offered IP address is not in use using ARP</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">netif</td><td>the network interface on which the reply was received </td></tr>
<tr><td class="paramname">addr</td><td>The IP address we received a reply from </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad7480883d64f3d6f083c8aa933b5e3cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7480883d64f3d6f083c8aa933b5e3cb">&#9670;&nbsp;</a></span>dhcp_coarse_tmr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dhcp_coarse_tmr </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The DHCP timer that checks for lease renewal/rebind timeouts. Must be called once a minute (see <a class="el" href="dhcp_8h.html#a3751cc5daa0875d415ebacd8ad675f1e">DHCP_COARSE_TIMER_SECS</a>). </p>
</div>
</div>
<a id="a601d97faa24fa7289244bb452f052045"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a601d97faa24fa7289244bb452f052045">&#9670;&nbsp;</a></span>dhcp_fine_tmr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dhcp_fine_tmr </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>DHCP transaction timeout handling (this function must be called every 500ms, see <a class="el" href="dhcp_8h.html#a7a26209f52eebe8ded457ae141df403f">DHCP_FINE_TIMER_MSECS</a>).</p>
<p>A DHCP server is expected to respond within a short period of time. This timer checks whether an outstanding DHCP request is timed out. </p>
</div>
</div>
<a id="a04f3824720223c439165243527906002"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a04f3824720223c439165243527906002">&#9670;&nbsp;</a></span>dhcp_network_changed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dhcp_network_changed </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Handle a possible change in the network configuration.</p>
<p>This enters the REBOOTING state to verify that the currently bound address is still valid. </p>
</div>
</div>
<a id="ae24a2529372218327ab9cb6592041c85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae24a2529372218327ab9cb6592041c85">&#9670;&nbsp;</a></span>dhcp_supplied_address()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u8_t dhcp_supplied_address </td>
<td>(</td>
<td class="paramtype">const struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>check if DHCP supplied netif-&gt;<a class="el" href="structip__addr.html">ip_addr</a></p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">netif</td><td>the netif to check </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 if DHCP supplied netif-&gt;<a class="el" href="structip__addr.html">ip_addr</a> (states BOUND or RENEWING), 0 otherwise </dd></dl>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a058b71e1d26b3758b29d16d9f892c8cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a058b71e1d26b3758b29d16d9f892c8cc">&#9670;&nbsp;</a></span>dhcp_rx_options_given</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u8_t dhcp_rx_options_given[DHCP_OPTION_IDX_MAX]</td>
</tr>
</table>
</div><div class="memdoc">
<p>Holds a flag which option was received and is contained in dhcp_rx_options_val, only valid while in dhcp_recv. </p>
</div>
</div>
<a id="a5abd232496063bddcbc6692c0e8f9c1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5abd232496063bddcbc6692c0e8f9c1f">&#9670;&nbsp;</a></span>dhcp_rx_options_val</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u32_t dhcp_rx_options_val[DHCP_OPTION_IDX_MAX]</td>
</tr>
</table>
</div><div class="memdoc">
<p>Holds the decoded option values, only valid while in dhcp_recv. </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_aebb8dcc11953d78e620bbef0b9e2183.html">core</a></li><li class="navelem"><a class="el" href="dir_a32e111ee6805cfc63488fd2d37f2390.html">ipv4</a></li><li class="navelem"><a class="el" href="dhcp_8c.html">dhcp.c</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,22 @@
var dhcp_8c =
[
[ "DHCP_CREATE_RAND_XID", "dhcp_8c.html#ad6de9c5120654454a330bf5de53c4835", null ],
[ "DHCP_MAX_MSG_LEN", "dhcp_8c.html#a63e9ec4517b80d8576f218d905e31a9b", null ],
[ "DHCP_MIN_REPLY_LEN", "dhcp_8c.html#aa52c2b64ef42fbad84a3bcd58052caab", null ],
[ "dhcp_option_idx", "dhcp_8c.html#a8c3b584d223b995b48613ad96cb776a0", null ],
[ "dhcp_arp_reply", "dhcp_8c.html#a1fc0a94e0b94f13c5d302018f7ecb535", null ],
[ "dhcp_cleanup", "group__dhcp4.html#ga292a1b0c0c288ec508108a3fba473e64", null ],
[ "dhcp_coarse_tmr", "dhcp_8c.html#ad7480883d64f3d6f083c8aa933b5e3cb", null ],
[ "dhcp_fine_tmr", "dhcp_8c.html#a601d97faa24fa7289244bb452f052045", null ],
[ "dhcp_inform", "group__dhcp4.html#gabd7fcc7e0799e313885fc7fd9d4992ad", null ],
[ "dhcp_network_changed", "dhcp_8c.html#a04f3824720223c439165243527906002", null ],
[ "dhcp_release", "group__dhcp4.html#gaf92f7afb58252f82a749064602974bd4", null ],
[ "dhcp_release_and_stop", "group__dhcp4.html#gaf7cd42b9f220446b6a597d3474da6ece", null ],
[ "dhcp_renew", "group__dhcp4.html#ga583eb8d58f5e96b7dea717948578a947", null ],
[ "dhcp_set_struct", "group__dhcp4.html#ga43812097832716a462c660eb59cc1bf8", null ],
[ "dhcp_start", "group__dhcp4.html#ga0c50968d9811aa2aa67fadc0885d744f", null ],
[ "dhcp_stop", "group__dhcp4.html#ga93f6bf21086dc9b10c0bec4676f97312", null ],
[ "dhcp_supplied_address", "dhcp_8c.html#ae24a2529372218327ab9cb6592041c85", null ],
[ "dhcp_rx_options_given", "dhcp_8c.html#a058b71e1d26b3758b29d16d9f892c8cc", null ],
[ "dhcp_rx_options_val", "dhcp_8c.html#a5abd232496063bddcbc6692c0e8f9c1f", null ]
];

View File

@ -0,0 +1,336 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/dhcp.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('dhcp_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">dhcp.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="netif_8h.html">lwip/netif.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="udp_8h.html">lwip/udp.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a3751cc5daa0875d415ebacd8ad675f1e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8h.html#a3751cc5daa0875d415ebacd8ad675f1e">DHCP_COARSE_TIMER_SECS</a>&#160;&#160;&#160;60</td></tr>
<tr class="separator:a3751cc5daa0875d415ebacd8ad675f1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad84b8f4deec421bbf6fd85e8fae047d6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8h.html#ad84b8f4deec421bbf6fd85e8fae047d6">DHCP_COARSE_TIMER_MSECS</a>&#160;&#160;&#160;(<a class="el" href="dhcp_8h.html#a3751cc5daa0875d415ebacd8ad675f1e">DHCP_COARSE_TIMER_SECS</a> * 1000UL)</td></tr>
<tr class="separator:ad84b8f4deec421bbf6fd85e8fae047d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a26209f52eebe8ded457ae141df403f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8h.html#a7a26209f52eebe8ded457ae141df403f">DHCP_FINE_TIMER_MSECS</a>&#160;&#160;&#160;500</td></tr>
<tr class="separator:a7a26209f52eebe8ded457ae141df403f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa92284faa099dac4331c1fc0b997dabc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8h.html#aa92284faa099dac4331c1fc0b997dabc">dhcp_remove_struct</a>(<a class="el" href="structnetif.html">netif</a>)&#160;&#160;&#160;<a class="el" href="group__netif__cd.html#ga5ce61a277e1951183f7b7d03742c231f">netif_set_client_data</a>(<a class="el" href="structnetif.html">netif</a>, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP, NULL)</td></tr>
<tr class="separator:aa92284faa099dac4331c1fc0b997dabc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga43812097832716a462c660eb59cc1bf8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga43812097832716a462c660eb59cc1bf8">dhcp_set_struct</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, struct dhcp *dhcp)</td></tr>
<tr class="separator:ga43812097832716a462c660eb59cc1bf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga292a1b0c0c288ec508108a3fba473e64"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga292a1b0c0c288ec508108a3fba473e64">dhcp_cleanup</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga292a1b0c0c288ec508108a3fba473e64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0c50968d9811aa2aa67fadc0885d744f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga0c50968d9811aa2aa67fadc0885d744f">dhcp_start</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga0c50968d9811aa2aa67fadc0885d744f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga583eb8d58f5e96b7dea717948578a947"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga583eb8d58f5e96b7dea717948578a947">dhcp_renew</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga583eb8d58f5e96b7dea717948578a947"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf92f7afb58252f82a749064602974bd4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#gaf92f7afb58252f82a749064602974bd4">dhcp_release</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gaf92f7afb58252f82a749064602974bd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga93f6bf21086dc9b10c0bec4676f97312"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#ga93f6bf21086dc9b10c0bec4676f97312">dhcp_stop</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ga93f6bf21086dc9b10c0bec4676f97312"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf7cd42b9f220446b6a597d3474da6ece"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#gaf7cd42b9f220446b6a597d3474da6ece">dhcp_release_and_stop</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gaf7cd42b9f220446b6a597d3474da6ece"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabd7fcc7e0799e313885fc7fd9d4992ad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dhcp4.html#gabd7fcc7e0799e313885fc7fd9d4992ad">dhcp_inform</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:gabd7fcc7e0799e313885fc7fd9d4992ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04f3824720223c439165243527906002"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8h.html#a04f3824720223c439165243527906002">dhcp_network_changed</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:a04f3824720223c439165243527906002"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1fc0a94e0b94f13c5d302018f7ecb535"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8h.html#a1fc0a94e0b94f13c5d302018f7ecb535">dhcp_arp_reply</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, const <a class="el" href="ip4__addr_8h.html#a3d3b45daffbc15d65da236e31e621b7e">ip4_addr_t</a> *addr)</td></tr>
<tr class="separator:a1fc0a94e0b94f13c5d302018f7ecb535"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae24a2529372218327ab9cb6592041c85"><td class="memItemLeft" align="right" valign="top">u8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8h.html#ae24a2529372218327ab9cb6592041c85">dhcp_supplied_address</a> (const struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:ae24a2529372218327ab9cb6592041c85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7480883d64f3d6f083c8aa933b5e3cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8h.html#ad7480883d64f3d6f083c8aa933b5e3cb">dhcp_coarse_tmr</a> (void)</td></tr>
<tr class="separator:ad7480883d64f3d6f083c8aa933b5e3cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a601d97faa24fa7289244bb452f052045"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dhcp_8h.html#a601d97faa24fa7289244bb452f052045">dhcp_fine_tmr</a> (void)</td></tr>
<tr class="separator:a601d97faa24fa7289244bb452f052045"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>DHCP client API </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ad84b8f4deec421bbf6fd85e8fae047d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad84b8f4deec421bbf6fd85e8fae047d6">&#9670;&nbsp;</a></span>DHCP_COARSE_TIMER_MSECS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DHCP_COARSE_TIMER_MSECS&#160;&#160;&#160;(<a class="el" href="dhcp_8h.html#a3751cc5daa0875d415ebacd8ad675f1e">DHCP_COARSE_TIMER_SECS</a> * 1000UL)</td>
</tr>
</table>
</div><div class="memdoc">
<p>period (in milliseconds) of the application calling <a class="el" href="dhcp_8h.html#ad7480883d64f3d6f083c8aa933b5e3cb">dhcp_coarse_tmr()</a> </p>
</div>
</div>
<a id="a3751cc5daa0875d415ebacd8ad675f1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3751cc5daa0875d415ebacd8ad675f1e">&#9670;&nbsp;</a></span>DHCP_COARSE_TIMER_SECS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DHCP_COARSE_TIMER_SECS&#160;&#160;&#160;60</td>
</tr>
</table>
</div><div class="memdoc">
<p>period (in seconds) of the application calling <a class="el" href="dhcp_8h.html#ad7480883d64f3d6f083c8aa933b5e3cb">dhcp_coarse_tmr()</a> </p>
</div>
</div>
<a id="a7a26209f52eebe8ded457ae141df403f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a26209f52eebe8ded457ae141df403f">&#9670;&nbsp;</a></span>DHCP_FINE_TIMER_MSECS</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define DHCP_FINE_TIMER_MSECS&#160;&#160;&#160;500</td>
</tr>
</table>
</div><div class="memdoc">
<p>period (in milliseconds) of the application calling <a class="el" href="dhcp_8h.html#a601d97faa24fa7289244bb452f052045">dhcp_fine_tmr()</a> </p>
</div>
</div>
<a id="aa92284faa099dac4331c1fc0b997dabc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa92284faa099dac4331c1fc0b997dabc">&#9670;&nbsp;</a></span>dhcp_remove_struct</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define dhcp_remove_struct</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><a class="el" href="structnetif.html">netif</a></td><td>)</td>
<td>&#160;&#160;&#160;<a class="el" href="group__netif__cd.html#ga5ce61a277e1951183f7b7d03742c231f">netif_set_client_data</a>(<a class="el" href="structnetif.html">netif</a>, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP, NULL)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove a struct dhcp previously set to the netif using <a class="el" href="group__dhcp4.html#ga43812097832716a462c660eb59cc1bf8">dhcp_set_struct()</a> </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a1fc0a94e0b94f13c5d302018f7ecb535"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1fc0a94e0b94f13c5d302018f7ecb535">&#9670;&nbsp;</a></span>dhcp_arp_reply()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dhcp_arp_reply </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="ip4__addr_8h.html#a3d3b45daffbc15d65da236e31e621b7e">ip4_addr_t</a> *&#160;</td>
<td class="paramname"><em>addr</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Match an ARP reply with the offered IP address: check whether the offered IP address is not in use using ARP</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">netif</td><td>the network interface on which the reply was received </td></tr>
<tr><td class="paramname">addr</td><td>The IP address we received a reply from </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad7480883d64f3d6f083c8aa933b5e3cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7480883d64f3d6f083c8aa933b5e3cb">&#9670;&nbsp;</a></span>dhcp_coarse_tmr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dhcp_coarse_tmr </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The DHCP timer that checks for lease renewal/rebind timeouts. Must be called once a minute (see <a class="el" href="dhcp_8h.html#a3751cc5daa0875d415ebacd8ad675f1e">DHCP_COARSE_TIMER_SECS</a>). </p>
</div>
</div>
<a id="a601d97faa24fa7289244bb452f052045"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a601d97faa24fa7289244bb452f052045">&#9670;&nbsp;</a></span>dhcp_fine_tmr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dhcp_fine_tmr </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>DHCP transaction timeout handling (this function must be called every 500ms, see <a class="el" href="dhcp_8h.html#a7a26209f52eebe8ded457ae141df403f">DHCP_FINE_TIMER_MSECS</a>).</p>
<p>A DHCP server is expected to respond within a short period of time. This timer checks whether an outstanding DHCP request is timed out. </p>
</div>
</div>
<a id="a04f3824720223c439165243527906002"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a04f3824720223c439165243527906002">&#9670;&nbsp;</a></span>dhcp_network_changed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dhcp_network_changed </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Handle a possible change in the network configuration.</p>
<p>This enters the REBOOTING state to verify that the currently bound address is still valid. </p>
</div>
</div>
<a id="ae24a2529372218327ab9cb6592041c85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae24a2529372218327ab9cb6592041c85">&#9670;&nbsp;</a></span>dhcp_supplied_address()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u8_t dhcp_supplied_address </td>
<td>(</td>
<td class="paramtype">const struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>check if DHCP supplied netif-&gt;<a class="el" href="structip__addr.html">ip_addr</a></p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">netif</td><td>the netif to check </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>1 if DHCP supplied netif-&gt;<a class="el" href="structip__addr.html">ip_addr</a> (states BOUND or RENEWING), 0 otherwise </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="dhcp_8h.html">dhcp.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,20 @@
var dhcp_8h =
[
[ "DHCP_COARSE_TIMER_MSECS", "dhcp_8h.html#ad84b8f4deec421bbf6fd85e8fae047d6", null ],
[ "DHCP_COARSE_TIMER_SECS", "dhcp_8h.html#a3751cc5daa0875d415ebacd8ad675f1e", null ],
[ "DHCP_FINE_TIMER_MSECS", "dhcp_8h.html#a7a26209f52eebe8ded457ae141df403f", null ],
[ "dhcp_remove_struct", "dhcp_8h.html#aa92284faa099dac4331c1fc0b997dabc", null ],
[ "dhcp_arp_reply", "dhcp_8h.html#a1fc0a94e0b94f13c5d302018f7ecb535", null ],
[ "dhcp_cleanup", "group__dhcp4.html#ga292a1b0c0c288ec508108a3fba473e64", null ],
[ "dhcp_coarse_tmr", "dhcp_8h.html#ad7480883d64f3d6f083c8aa933b5e3cb", null ],
[ "dhcp_fine_tmr", "dhcp_8h.html#a601d97faa24fa7289244bb452f052045", null ],
[ "dhcp_inform", "group__dhcp4.html#gabd7fcc7e0799e313885fc7fd9d4992ad", null ],
[ "dhcp_network_changed", "dhcp_8h.html#a04f3824720223c439165243527906002", null ],
[ "dhcp_release", "group__dhcp4.html#gaf92f7afb58252f82a749064602974bd4", null ],
[ "dhcp_release_and_stop", "group__dhcp4.html#gaf7cd42b9f220446b6a597d3474da6ece", null ],
[ "dhcp_renew", "group__dhcp4.html#ga583eb8d58f5e96b7dea717948578a947", null ],
[ "dhcp_set_struct", "group__dhcp4.html#ga43812097832716a462c660eb59cc1bf8", null ],
[ "dhcp_start", "group__dhcp4.html#ga0c50968d9811aa2aa67fadc0885d744f", null ],
[ "dhcp_stop", "group__dhcp4.html#ga93f6bf21086dc9b10c0bec4676f97312", null ],
[ "dhcp_supplied_address", "dhcp_8h.html#ae24a2529372218327ab9cb6592041c85", null ]
];

View File

@ -0,0 +1,100 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: doc/doxygen Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('dir_04f2ecc425faf0d475a3caf484e551f3.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">doxygen Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_e68e8157741866f444e17edd764ebbae.html">doc</a></li><li class="navelem"><a class="el" href="dir_04f2ecc425faf0d475a3caf484e551f3.html">doxygen</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,106 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/apps/smtp Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('dir_149963277126306875d8bfe8322084f3.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">smtp Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:smtp_8c"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="smtp_8c.html">smtp.c</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li><li class="navelem"><a class="el" href="dir_149963277126306875d8bfe8322084f3.html">smtp</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,4 @@
var dir_149963277126306875d8bfe8322084f3 =
[
[ "smtp.c", "smtp_8c.html", "smtp_8c" ]
];

View File

@ -0,0 +1,112 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/apps/altcp_tls Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('dir_1cb496c74bbaf54ecc99133e1c434e0c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">altcp_tls Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:altcp__tls__mbedtls_8c"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__tls__mbedtls_8c.html">altcp_tls_mbedtls.c</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:altcp__tls__mbedtls__mem_8c"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__tls__mbedtls__mem_8c.html">altcp_tls_mbedtls_mem.c</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:altcp__tls__mbedtls__mem_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__tls__mbedtls__mem_8h.html">altcp_tls_mbedtls_mem.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:altcp__tls__mbedtls__structs_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="altcp__tls__mbedtls__structs_8h.html">altcp_tls_mbedtls_structs.h</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_53adf0b982dc8545998aae3f283a5a58.html">apps</a></li><li class="navelem"><a class="el" href="dir_1cb496c74bbaf54ecc99133e1c434e0c.html">altcp_tls</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More