UbixOS
2.0
loopif.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2001, Swedish Institute of Computer Science.
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* 3. Neither the name of the Institute nor the names of its contributors
14
* may be used to endorse or promote products derived from this software
15
* without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
18
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
21
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
* SUCH DAMAGE.
28
*
29
* This file is part of the lwIP TCP/IP stack.
30
*
31
* Author: Adam Dunkels <adam@sics.se>
32
*
33
* $Id: loopif.c 54 2016-01-11 01:29:55Z reddawg $
34
*/
35
#include "
net/debug.h
"
36
#include "
net/mem.h
"
37
#include "
net/opt.h
"
38
#include "netif/loopif.h"
39
#include "netif/tcpdump.h"
40
41
#include "
net/tcp.h
"
42
#include "net/ipv4/ip.h"
43
44
/*-----------------------------------------------------------------------------------*/
45
static
err_t
46
loopif_output(
struct
netif
*
netif
,
struct
pbuf
*p,
47
struct
ip_addr *ipaddr)
48
{
49
struct
pbuf
*q, *r;
50
char
*ptr;
51
52
#ifdef LWIP_DEBUG
53
tcpdump
(p);
54
#endif
/* LWIP_DEBUG */
55
56
r =
pbuf_alloc
(
PBUF_RAW
, p->
tot_len
,
PBUF_RAM
);
57
if
(r !=
NULL
) {
58
ptr = r->
payload
;
59
60
for
(q = p; q !=
NULL
; q = q->
next
) {
61
bcopy
(q->
payload
, ptr, q->
len
);
62
ptr += q->
len
;
63
}
64
netif
->
input
(r,
netif
);
65
return
ERR_OK
;
66
}
67
return
ERR_MEM
;
68
}
69
/*-----------------------------------------------------------------------------------*/
70
void
71
loopif_init
(
struct
netif
*
netif
)
72
{
73
netif
->
name
[0] =
'l'
;
74
netif
->
name
[1] =
'o'
;
75
netif
->output = loopif_output;
76
}
77
/*-----------------------------------------------------------------------------------*/
78
79
80
81
82
83
84
opt.h
pbuf::len
u16_t len
Definition:
pbuf.h:159
PBUF_RAW
Definition:
pbuf.h:94
netif::input
netif_input_fn input
Definition:
netif.h:252
loopif_init
void loopif_init(struct netif *netif)
Definition:
loopif.c:71
pbuf::tot_len
u16_t tot_len
Definition:
pbuf.h:156
pbuf::next
struct pbuf * next
Definition:
pbuf.h:144
bcopy
#define bcopy(src, dst, len)
Definition:
gpt.h:36
ERR_MEM
Definition:
err.h:65
pbuf_alloc
struct pbuf * pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type)
Definition:
pbuf.c:248
netif
Definition:
netif.h:233
netif::name
char name[2]
Definition:
netif.h:315
PBUF_RAM
Definition:
pbuf.h:108
ERR_OK
Definition:
err.h:63
err_t
s8_t err_t
Definition:
err.h:57
tcp.h
mem.h
pbuf
Definition:
pbuf.h:142
tcpdump
void tcpdump(struct pbuf *p)
Definition:
tcpdump.c:57
debug.h
pbuf::payload
void * payload
Definition:
pbuf.h:147
NULL
#define NULL
Definition:
fat_string.h:17
net
netif
loopif.c
Generated by
1.8.16