auto_ip.c File Reference

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

#include "core/net.h"
#include "core/ethernet.h"
#include "ipv4/arp.h"
#include "ipv4/auto_ip.h"
#include "mdns/mdns_responder.h"
#include "debug.h"

Go to the source code of this file.

Macros

#define TRACE_LEVEL   AUTO_IP_TRACE_LEVEL
 

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.

Description

Auto-IP describes a method by which a host may automatically configure an interface with an IPv4 address in the 169.254/16 prefix that is valid for Link-Local communication on that interface. This is especially valuable in environments where no other configuration mechanism is available. Refer to the following RFCs for complete details:

  • RFC 3927: Dynamic Configuration of IPv4 Link-Local Addresses
  • RFC 5227: IPv4 Address Conflict Detection
Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
1.9.0

Definition in file auto_ip.c.

Macro Definition Documentation

◆ TRACE_LEVEL

#define TRACE_LEVEL   AUTO_IP_TRACE_LEVEL

Definition at line 40 of file auto_ip.c.

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.