source: mainline/uspace/srv/net/ethip/ethip.h@ eb13ef8

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since eb13ef8 was a35b458, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 7 years ago

style: Remove trailing whitespace on _all_ lines, including empty ones, for particular file types.

Command used: tools/srepl '\s\+$' '' -- *.c *.h *.py *.sh *.s *.S *.ag

Currently, whitespace on empty lines is very inconsistent.
There are two basic choices: Either remove the whitespace, or keep empty lines
indented to the level of surrounding code. The former is AFAICT more common,
and also much easier to do automatically.

Alternatively, we could write script for automatic indentation, and use that
instead. However, if such a script exists, it's possible to use the indented
style locally, by having the editor apply relevant conversions on load/save,
without affecting remote repository. IMO, it makes more sense to adopt
the simpler rule.

  • Property mode set to 100644
File size: 3.1 KB
Line 
1/*
2 * Copyright (c) 2012 Jiri Svoboda
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 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup ethip
30 * @{
31 */
32/**
33 * @file
34 * @brief
35 */
36
37#ifndef ETHIP_H_
38#define ETHIP_H_
39
40#include <adt/list.h>
41#include <async.h>
42#include <inet/iplink_srv.h>
43#include <inet/addr.h>
44#include <loc.h>
45#include <stddef.h>
46#include <stdint.h>
47
48typedef struct {
49 link_t link;
50 inet_addr_t addr;
51} ethip_link_addr_t;
52
53typedef struct ethip_nic {
54 link_t link;
55 service_id_t svc_id;
56 char *svc_name;
57 async_sess_t *sess;
58
59 iplink_srv_t iplink;
60 service_id_t iplink_sid;
61
62 /** MAC address */
63 addr48_t mac_addr;
64
65 /**
66 * List of IP addresses configured on this link
67 * (of the type ethip_link_addr_t)
68 */
69 list_t addr_list;
70} ethip_nic_t;
71
72/** Ethernet frame */
73typedef struct {
74 /** Destination Address */
75 addr48_t dest;
76 /** Source Address */
77 addr48_t src;
78 /** Ethertype or Length */
79 uint16_t etype_len;
80 /** Payload */
81 void *data;
82 /** Payload size */
83 size_t size;
84} eth_frame_t;
85
86/** ARP opcode */
87typedef enum {
88 /** Request */
89 aop_request,
90 /** Reply */
91 aop_reply
92} arp_opcode_t;
93
94/** ARP packet (for 48-bit MAC addresses and IPv4)
95 *
96 * Internal representation
97 */
98typedef struct {
99 /** Opcode */
100 arp_opcode_t opcode;
101 /** Sender hardware address */
102 addr48_t sender_hw_addr;
103 /** Sender protocol address */
104 addr32_t sender_proto_addr;
105 /** Target hardware address */
106 addr48_t target_hw_addr;
107 /** Target protocol address */
108 addr32_t target_proto_addr;
109} arp_eth_packet_t;
110
111/** Address translation table element */
112typedef struct {
113 link_t atrans_list;
114 addr32_t ip_addr;
115 addr48_t mac_addr;
116} ethip_atrans_t;
117
118extern errno_t ethip_iplink_init(ethip_nic_t *);
119extern errno_t ethip_received(iplink_srv_t *, void *, size_t);
120
121#endif
122
123/** @}
124 */
Note: See TracBrowser for help on using the repository browser.