Contiki 3.x
eth-conf.c
1 /*
2  * Copyright (C) 2015-2016, Intel Corporation. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  *
13  * 3. Neither the name of the copyright holder nor the names of its
14  * contributors may be used to endorse or promote products derived
15  * from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21  * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28  * OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 #include "eth-conf.h"
32 #include "net/eth-proc.h"
33 #include "contiki-net.h"
34 #include "net/linkaddr.h"
35 
36 #if NETSTACK_CONF_WITH_IPV6
37 const linkaddr_t linkaddr_null = { { 0, 0, 0, 0, 0, 0 } };
38 #else
39 /* 192.0.2.0/24 is a block reserved for documentation by RFC 5737. */
40 #define SUBNET_IP 192, 0, 2
41 #define NETMASK_IP 255, 255, 255, 0
42 #define HOST_IP SUBNET_IP, 2
43 #define GATEWAY_IP SUBNET_IP, 1
44 #define NAMESERVER_IP GATEWAY_IP
45 #endif
46 
47 /*---------------------------------------------------------------------------*/
48 void
49 eth_init(void)
50 {
51 #if !NETSTACK_CONF_WITH_IPV6
52  uip_ipaddr_t ip_addr;
53 
54 #define SET_IP_ADDR(x) \
55  uip_ipaddr(&ip_addr, x)
56 
57  SET_IP_ADDR(HOST_IP);
58  uip_sethostaddr(&ip_addr);
59 
60  SET_IP_ADDR(NETMASK_IP);
61  uip_setnetmask(&ip_addr);
62 
63  SET_IP_ADDR(GATEWAY_IP);
64  uip_setdraddr(&ip_addr);
65 
66 #if WITH_DNS
67  SET_IP_ADDR(NAMESERVER_IP);
69 #endif
70 #endif
71 
72  process_start(&eth_process, NULL);
73 }
74 /*---------------------------------------------------------------------------*/
#define uip_sethostaddr(addr)
Set the IP address of this host.
Definition: uip.h:192
#define uip_setdraddr(addr)
Set the default router's IP address.
Definition: uip.h:224
const linkaddr_t linkaddr_null
The null Rime address.
Definition: eth-conf.c:37
void uip_nameserver_update(const uip_ipaddr_t *nameserver, uint32_t lifetime)
Initialize the module variables.
Header file for the Rime address representation
#define uip_setnetmask(addr)
Set the netmask.
Definition: uip.h:236
#define NULL
The null pointer.
void process_start(struct process *p, process_data_t data)
Start a process.
Definition: process.c:99
#define UIP_NAMESERVER_INFINITE_LIFETIME
Infinite Lifetime indicator.