auto_ip.h File Reference

Auto-IP (Dynamic Configuration of IPv4 Link-Local Addresses) More...

#include "core/net.h"

Go to the source code of this file.

Data Structures

struct  AutoIpSettings
 Auto-IP settings. More...
 
struct  _AutoIpContext
 Auto-IP context. More...
 

Macros

#define AUTO_IP_SUPPORT   DISABLED
 
#define AUTO_IP_BCT_SUPPORT   DISABLED
 
#define AUTO_IP_TICK_INTERVAL   200
 
#define AUTO_IP_PROBE_WAIT   1000
 
#define AUTO_IP_PROBE_NUM   3
 
#define AUTO_IP_PROBE_MIN   1000
 
#define AUTO_IP_PROBE_MAX   2000
 
#define AUTO_IP_ANNOUNCE_WAIT   2000
 
#define AUTO_IP_ANNOUNCE_NUM   2
 
#define AUTO_IP_ANNOUNCE_INTERVAL   2000
 
#define AUTO_IP_MAX_CONFLICTS   10
 
#define AUTO_IP_RATE_LIMIT_INTERVAL   60000
 
#define AUTO_IP_DEFEND_INTERVAL   10000
 
#define AUTO_IP_PREFIX   IPV4_ADDR(169, 254, 0, 0)
 
#define AUTO_IP_MASK   IPV4_ADDR(255, 255, 0, 0)
 
#define AUTO_IP_ADDR_MIN   IPV4_ADDR(169, 254, 1, 0)
 
#define AUTO_IP_ADDR_MAX   IPV4_ADDR(169, 254, 254, 255)
 
#define AutoIpContext   struct _AutoIpContext
 

Typedefs

typedef void(* AutoIpLinkChangeCallback) (AutoIpContext *context, NetInterface *interface, bool_t linkState)
 Link state change callback. More...
 
typedef void(* AutoIpStateChangeCallback) (AutoIpContext *context, NetInterface *interface, AutoIpState state)
 FSM state change callback. More...
 

Enumerations

enum  AutoIpState {
  AUTO_IP_STATE_INIT = 0, AUTO_IP_STATE_PROBING = 1, AUTO_IP_STATE_ANNOUNCING = 2, AUTO_IP_STATE_CONFIGURED = 3,
  AUTO_IP_STATE_DEFENDING = 4
}
 Auto-IP FSM states. More...
 

Functions

void autoIpGetDefaultSettings (AutoIpSettings *settings)
 Initialize settings with default values. More...
 
error_t autoIpInit (AutoIpContext *context, const AutoIpSettings *settings)
 Auto-IP initialization. More...
 
error_t autoIpStart (AutoIpContext *context)
 Start Auto-IP process. More...
 
error_t autoIpStop (AutoIpContext *context)
 Stop Auto-IP process. More...
 
AutoIpState autoIpGetState (AutoIpContext *context)
 Retrieve current state. More...
 
void autoIpTick (AutoIpContext *context)
 Auto-IP timer handler. More...
 
void autoIpLinkChangeEvent (AutoIpContext *context)
 Callback function for link change event. More...
 
void autoIpChangeState (AutoIpContext *context, AutoIpState newState, systime_t delay)
 Update Auto-IP FSM state. More...
 
void autoIpGenerateAddr (Ipv4Addr *ipAddr)
 Generate a random link-local address. More...
 
void autoIpDumpConfig (AutoIpContext *context)
 Dump Auto-IP configuration for debugging purpose. More...
 

Variables

systime_t autoIpTickCounter
 

Detailed Description

Auto-IP (Dynamic Configuration of IPv4 Link-Local Addresses)

License

Copyright (C) 2010-2018 Oryx Embedded SARL. All rights reserved.

This file is part of CycloneTCP Open.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
1.9.0

Definition in file auto_ip.h.

Macro Definition Documentation

◆ AUTO_IP_ADDR_MAX

#define AUTO_IP_ADDR_MAX   IPV4_ADDR(169, 254, 254, 255)

Definition at line 133 of file auto_ip.h.

◆ AUTO_IP_ADDR_MIN

#define AUTO_IP_ADDR_MIN   IPV4_ADDR(169, 254, 1, 0)

Definition at line 132 of file auto_ip.h.

◆ AUTO_IP_ANNOUNCE_INTERVAL

#define AUTO_IP_ANNOUNCE_INTERVAL   2000

Definition at line 100 of file auto_ip.h.

◆ AUTO_IP_ANNOUNCE_NUM

#define AUTO_IP_ANNOUNCE_NUM   2

Definition at line 93 of file auto_ip.h.

◆ AUTO_IP_ANNOUNCE_WAIT

#define AUTO_IP_ANNOUNCE_WAIT   2000

Definition at line 86 of file auto_ip.h.

◆ AUTO_IP_BCT_SUPPORT

#define AUTO_IP_BCT_SUPPORT   DISABLED

Definition at line 44 of file auto_ip.h.

◆ AUTO_IP_DEFEND_INTERVAL

#define AUTO_IP_DEFEND_INTERVAL   10000

Definition at line 121 of file auto_ip.h.

◆ AUTO_IP_MASK

#define AUTO_IP_MASK   IPV4_ADDR(255, 255, 0, 0)

Definition at line 129 of file auto_ip.h.

◆ AUTO_IP_MAX_CONFLICTS

#define AUTO_IP_MAX_CONFLICTS   10

Definition at line 107 of file auto_ip.h.

◆ AUTO_IP_PREFIX

#define AUTO_IP_PREFIX   IPV4_ADDR(169, 254, 0, 0)

Definition at line 127 of file auto_ip.h.

◆ AUTO_IP_PROBE_MAX

#define AUTO_IP_PROBE_MAX   2000

Definition at line 79 of file auto_ip.h.

◆ AUTO_IP_PROBE_MIN

#define AUTO_IP_PROBE_MIN   1000

Definition at line 72 of file auto_ip.h.

◆ AUTO_IP_PROBE_NUM

#define AUTO_IP_PROBE_NUM   3

Definition at line 65 of file auto_ip.h.

◆ AUTO_IP_PROBE_WAIT

#define AUTO_IP_PROBE_WAIT   1000

Definition at line 58 of file auto_ip.h.

◆ AUTO_IP_RATE_LIMIT_INTERVAL

#define AUTO_IP_RATE_LIMIT_INTERVAL   60000

Definition at line 114 of file auto_ip.h.

◆ AUTO_IP_SUPPORT

#define AUTO_IP_SUPPORT   DISABLED

Definition at line 37 of file auto_ip.h.

◆ AUTO_IP_TICK_INTERVAL

#define AUTO_IP_TICK_INTERVAL   200

Definition at line 51 of file auto_ip.h.

◆ AutoIpContext

#define AutoIpContext   struct _AutoIpContext

Definition at line 137 of file auto_ip.h.

Typedef Documentation

◆ AutoIpLinkChangeCallback

typedef void(* AutoIpLinkChangeCallback) (AutoIpContext *context, NetInterface *interface, bool_t linkState)

Link state change callback.

Definition at line 163 of file auto_ip.h.

◆ AutoIpStateChangeCallback

typedef void(* AutoIpStateChangeCallback) (AutoIpContext *context, NetInterface *interface, AutoIpState state)

FSM state change callback.

Definition at line 171 of file auto_ip.h.

Enumeration Type Documentation

◆ AutoIpState

Auto-IP FSM states.

Enumerator
AUTO_IP_STATE_INIT 
AUTO_IP_STATE_PROBING 
AUTO_IP_STATE_ANNOUNCING 
AUTO_IP_STATE_CONFIGURED 
AUTO_IP_STATE_DEFENDING 

Definition at line 149 of file auto_ip.h.

Function Documentation

◆ autoIpChangeState()

void autoIpChangeState ( AutoIpContext context,
AutoIpState  newState,
systime_t  delay 
)

Update Auto-IP FSM state.

Parameters
[in]contextPointer to the Auto-IP context
[in]newStateNew Auto-IP state to switch to
[in]delayInitial delay

Definition at line 492 of file auto_ip.c.

◆ autoIpDumpConfig()

void autoIpDumpConfig ( AutoIpContext context)

Dump Auto-IP configuration for debugging purpose.

Parameters
[in]contextPointer to the Auto-IP context

Definition at line 545 of file auto_ip.c.

◆ autoIpGenerateAddr()

void autoIpGenerateAddr ( Ipv4Addr ipAddr)

Generate a random link-local address.

Parameters
[out]ipAddrRandom link-local address

Definition at line 527 of file auto_ip.c.

◆ autoIpGetDefaultSettings()

void autoIpGetDefaultSettings ( AutoIpSettings settings)

Initialize settings with default values.

Parameters
[out]settingsStructure that contains Auto-IP settings

Definition at line 62 of file auto_ip.c.

◆ autoIpGetState()

AutoIpState autoIpGetState ( AutoIpContext context)

Retrieve current state.

Parameters
[in]contextPointer to the Auto-IP context
Returns
Current Auto-IP state

Definition at line 206 of file auto_ip.c.

◆ autoIpInit()

error_t autoIpInit ( AutoIpContext context,
const AutoIpSettings settings 
)

Auto-IP initialization.

Parameters
[in]contextPointer to the Auto-IP context
[in]settingsAuto-IP specific settings
Returns
Error code

Definition at line 83 of file auto_ip.c.

◆ autoIpLinkChangeEvent()

void autoIpLinkChangeEvent ( AutoIpContext context)

Callback function for link change event.

Parameters
[in]contextPointer to the Auto-IP context

Definition at line 440 of file auto_ip.c.

◆ autoIpStart()

error_t autoIpStart ( AutoIpContext context)

Start Auto-IP process.

Parameters
[in]contextPointer to the Auto-IP context
Returns
Error code

Definition at line 130 of file auto_ip.c.

◆ autoIpStop()

error_t autoIpStop ( AutoIpContext context)

Stop Auto-IP process.

Parameters
[in]contextPointer to the Auto-IP context
Returns
Error code

Definition at line 175 of file auto_ip.c.

◆ autoIpTick()

void autoIpTick ( AutoIpContext context)

Auto-IP timer handler.

This routine must be periodically called by the TCP/IP stack to manage Auto-IP operation

Parameters
[in]contextPointer to the Auto-IP context

Definition at line 231 of file auto_ip.c.

Variable Documentation

◆ autoIpTickCounter

systime_t autoIpTickCounter

Definition at line 54 of file auto_ip.c.