Changeset b4edc96 in mainline for uspace/lib/inet
- Timestamp:
- 2021-08-08T09:20:20Z (4 years ago)
- Branches:
- master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3e6bca8
- Parents:
- d5ed54b
- Location:
- uspace/lib/inet
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/inet/include/inet/addr.h
rd5ed54b rb4edc96 37 37 38 38 #include <errno.h> 39 #include <inet/eth_addr.h> 39 40 #include <stdint.h> 40 41 41 42 typedef uint32_t addr32_t; 42 43 #define ETH_ADDR_SIZE 644 45 typedef struct {46 uint8_t b[ETH_ADDR_SIZE];47 } addr48_t;48 43 49 44 typedef uint8_t addr128_t[16]; … … 84 79 85 80 extern const addr32_t addr32_broadcast_all_hosts; 86 extern const addr48_t addr48_broadcast;87 81 88 82 extern void addr128(const addr128_t, addr128_t); 89 83 90 extern int addr48_compare(const addr48_t *, const addr48_t *);91 84 extern int addr128_compare(const addr128_t, const addr128_t); 92 93 extern void addr48_solicited_node(const addr128_t, addr48_t *); 85 extern void eth_addr_solicited_node(const addr128_t, eth_addr_t *); 94 86 95 87 extern void host2addr128_t_be(const addr128_t, addr128_t); -
uspace/lib/inet/include/inet/eth_addr.h
rd5ed54b rb4edc96 38 38 #define _LIBC_INET_ETH_ADDR_H_ 39 39 40 // XXX Move addr48 here 41 #include <inet/addr.h> 40 #include <stdint.h> 42 41 43 extern void mac48_encode(addr48_t *, void *); 44 extern void mac48_decode(const void *, addr48_t *); 42 #define ETH_ADDR_SIZE 6 43 44 typedef struct { 45 uint8_t b[ETH_ADDR_SIZE]; 46 } eth_addr_t; 47 48 extern const eth_addr_t eth_addr_broadcast; 49 50 extern void eth_addr_encode(eth_addr_t *, void *); 51 extern void eth_addr_decode(const void *, eth_addr_t *); 52 53 extern int eth_addr_compare(const eth_addr_t *, const eth_addr_t *); 45 54 46 55 #endif -
uspace/lib/inet/include/inet/iplink.h
rd5ed54b rb4edc96 38 38 #include <async.h> 39 39 #include <inet/addr.h> 40 #include <inet/eth_addr.h> 40 41 41 42 struct iplink_ev_ops; … … 62 63 typedef struct { 63 64 /** Local MAC destination address */ 64 addr48_t dest;65 eth_addr_t dest; 65 66 /** Serialized IP packet */ 66 67 void *data; … … 79 80 typedef struct iplink_ev_ops { 80 81 errno_t (*recv)(iplink_t *, iplink_recv_sdu_t *, ip_ver_t); 81 errno_t (*change_addr)(iplink_t *, addr48_t *);82 errno_t (*change_addr)(iplink_t *, eth_addr_t *); 82 83 } iplink_ev_ops_t; 83 84 … … 89 90 extern errno_t iplink_addr_remove(iplink_t *, inet_addr_t *); 90 91 extern errno_t iplink_get_mtu(iplink_t *, size_t *); 91 extern errno_t iplink_get_mac48(iplink_t *, addr48_t *);92 extern errno_t iplink_set_mac48(iplink_t *, addr48_t *);92 extern errno_t iplink_get_mac48(iplink_t *, eth_addr_t *); 93 extern errno_t iplink_set_mac48(iplink_t *, eth_addr_t *); 93 94 extern void *iplink_get_userptr(iplink_t *); 94 95 -
uspace/lib/inet/include/inet/iplink_srv.h
rd5ed54b rb4edc96 1 1 /* 2 * Copyright (c) 20 12Jiri Svoboda2 * Copyright (c) 2021 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 38 38 #include <async.h> 39 39 #include <fibril_synch.h> 40 #include <inet/addr.h> 41 #include <inet/eth_addr.h> 42 #include <inet/iplink.h> 40 43 #include <stdbool.h> 41 #include <inet/addr.h>42 #include <inet/iplink.h>43 44 44 45 struct iplink_ops; … … 58 59 errno_t (*send6)(iplink_srv_t *, iplink_sdu6_t *); 59 60 errno_t (*get_mtu)(iplink_srv_t *, size_t *); 60 errno_t (*get_mac48)(iplink_srv_t *, addr48_t *);61 errno_t (*set_mac48)(iplink_srv_t *, addr48_t *);61 errno_t (*get_mac48)(iplink_srv_t *, eth_addr_t *); 62 errno_t (*set_mac48)(iplink_srv_t *, eth_addr_t *); 62 63 errno_t (*addr_add)(iplink_srv_t *, inet_addr_t *); 63 64 errno_t (*addr_remove)(iplink_srv_t *, inet_addr_t *); … … 68 69 extern errno_t iplink_conn(ipc_call_t *, void *); 69 70 extern errno_t iplink_ev_recv(iplink_srv_t *, iplink_recv_sdu_t *, ip_ver_t); 70 extern errno_t iplink_ev_change_addr(iplink_srv_t *, addr48_t *);71 extern errno_t iplink_ev_change_addr(iplink_srv_t *, eth_addr_t *); 71 72 72 73 #endif -
uspace/lib/inet/include/types/inetcfg.h
rd5ed54b rb4edc96 1 1 /* 2 * Copyright (c) 20 13Jiri Svoboda2 * Copyright (c) 2021 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 36 36 #define _LIBC_TYPES_INETCFG_H_ 37 37 38 #include <inet/eth_addr.h> 38 39 #include <inet/inet.h> 39 40 #include <stddef.h> … … 56 57 size_t def_mtu; 57 58 /** Link layer address */ 58 addr48_t mac_addr;59 eth_addr_t mac_addr; 59 60 } inet_link_info_t; 60 61 -
uspace/lib/inet/src/addr.c
rd5ed54b rb4edc96 37 37 #include <errno.h> 38 38 #include <inet/addr.h> 39 #include <inet/eth_addr.h> 39 40 #include <stdio.h> 40 41 #include <stddef.h> … … 54 55 const addr32_t addr32_broadcast_all_hosts = 0xffffffff; 55 56 56 const addr48_t addr48_broadcast = { 57 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 58 }; 59 60 static const addr48_t inet_addr48_solicited_node = { 57 static const eth_addr_t inet_eth_addr_solicited_node = { 61 58 0x33, 0x33, 0xff, 0, 0, 0 62 59 }; … … 77 74 } 78 75 79 /** Compare addr48.80 *81 * @return Non-zero if equal, zero if not equal.82 */83 int addr48_compare(const addr48_t *a, const addr48_t *b)84 {85 return memcmp(a->b, b->b, 6) == 0;86 }87 88 76 /** Compare addr128. 89 77 * … … 101 89 * 102 90 */ 103 void addr48_solicited_node(const addr128_t ip, addr48_t *mac)104 { 105 memcpy(&mac->b[0], &inet_ addr48_solicited_node.b[0], 3);91 void eth_addr_solicited_node(const addr128_t ip, eth_addr_t *mac) 92 { 93 memcpy(&mac->b[0], &inet_eth_addr_solicited_node.b[0], 3); 106 94 memcpy(&mac->b[3], ip + 13, 3); 107 95 } -
uspace/lib/inet/src/eth_addr.c
rd5ed54b rb4edc96 38 38 #include <mem.h> 39 39 40 void mac48_encode(addr48_t *addr, void *buf) 40 const eth_addr_t eth_addr_broadcast = { 41 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 42 }; 43 44 void eth_addr_encode(eth_addr_t *addr, void *buf) 41 45 { 42 46 uint8_t *bp = (uint8_t *)buf; … … 45 49 } 46 50 47 void mac48_decode(const void *buf, addr48_t *addr)51 void eth_addr_decode(const void *buf, eth_addr_t *addr) 48 52 { 49 53 const uint8_t *bp = (uint8_t *)buf; … … 52 56 } 53 57 58 /** Compare ethernet addresses. 59 * 60 * @return Non-zero if equal, zero if not equal. 61 */ 62 int eth_addr_compare(const eth_addr_t *a, const eth_addr_t *b) 63 { 64 return memcmp(a->b, b->b, ETH_ADDR_SIZE) == 0; 65 } 66 54 67 /** @} 55 68 */ -
uspace/lib/inet/src/inetcfg.c
rd5ed54b rb4edc96 1 1 /* 2 * Copyright (c) 20 12Jiri Svoboda2 * Copyright (c) 2021 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 30 30 #include <assert.h> 31 31 #include <errno.h> 32 #include <inet/eth_addr.h> 32 33 #include <inet/inetcfg.h> 33 34 #include <ipc/inet.h> … … 292 293 aid_t req = async_send_1(exch, INETCFG_LINK_GET, link_id, &answer); 293 294 aid_t dreq = async_data_read(exch, name_buf, LOC_NAME_MAXLEN, &dreply); 294 errno_t rc = async_data_read_start(exch, &linfo->mac_addr, sizeof( addr48_t));295 errno_t rc = async_data_read_start(exch, &linfo->mac_addr, sizeof(eth_addr_t)); 295 296 async_wait_for(dreq, &dretval); 296 297 -
uspace/lib/inet/src/iplink.c
rd5ed54b rb4edc96 38 38 #include <assert.h> 39 39 #include <errno.h> 40 #include <inet/addr.h> 41 #include <inet/eth_addr.h> 40 42 #include <inet/iplink.h> 41 #include <inet/addr.h>42 43 #include <ipc/iplink.h> 43 44 #include <ipc/services.h> … … 115 116 aid_t req = async_send_0(exch, IPLINK_SEND6, &answer); 116 117 117 errno_t rc = async_data_write_start(exch, &sdu->dest, sizeof( addr48_t));118 errno_t rc = async_data_write_start(exch, &sdu->dest, sizeof(eth_addr_t)); 118 119 if (rc != EOK) { 119 120 async_exchange_end(exch); … … 153 154 } 154 155 155 errno_t iplink_get_mac48(iplink_t *iplink, addr48_t *mac)156 errno_t iplink_get_mac48(iplink_t *iplink, eth_addr_t *mac) 156 157 { 157 158 async_exch_t *exch = async_exchange_begin(iplink->sess); … … 160 161 aid_t req = async_send_0(exch, IPLINK_GET_MAC48, &answer); 161 162 162 errno_t rc = async_data_read_start(exch, mac, sizeof( addr48_t));163 errno_t rc = async_data_read_start(exch, mac, sizeof(eth_addr_t)); 163 164 164 165 loc_exchange_end(exch); … … 175 176 } 176 177 177 errno_t iplink_set_mac48(iplink_t *iplink, addr48_t *mac)178 errno_t iplink_set_mac48(iplink_t *iplink, eth_addr_t *mac) 178 179 { 179 180 async_exch_t *exch = async_exchange_begin(iplink->sess); … … 182 183 aid_t req = async_send_0(exch, IPLINK_GET_MAC48, &answer); 183 184 184 errno_t rc = async_data_read_start(exch, mac, sizeof( addr48_t));185 errno_t rc = async_data_read_start(exch, mac, sizeof(eth_addr_t)); 185 186 186 187 loc_exchange_end(exch); … … 264 265 static void iplink_ev_change_addr(iplink_t *iplink, ipc_call_t *icall) 265 266 { 266 addr48_t *addr;267 eth_addr_t *addr; 267 268 size_t size; 268 269 269 270 errno_t rc = async_data_write_accept((void **) &addr, false, 270 sizeof( addr48_t), sizeof(addr48_t), 0, &size);271 sizeof(eth_addr_t), sizeof(eth_addr_t), 0, &size); 271 272 if (rc != EOK) { 272 273 async_answer_0(icall, rc); -
uspace/lib/inet/src/iplink_srv.c
rd5ed54b rb4edc96 1 1 /* 2 * Copyright (c) 20 12Jiri Svoboda2 * Copyright (c) 2021 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 36 36 37 37 #include <errno.h> 38 #include <inet/eth_addr.h> 38 39 #include <ipc/iplink.h> 39 40 #include <stdlib.h> … … 51 52 static void iplink_get_mac48_srv(iplink_srv_t *srv, ipc_call_t *icall) 52 53 { 53 addr48_t mac;54 eth_addr_t mac; 54 55 errno_t rc = srv->ops->get_mac48(srv, &mac); 55 56 if (rc != EOK) { … … 66 67 } 67 68 68 if (size != sizeof( addr48_t)) {69 if (size != sizeof(eth_addr_t)) { 69 70 async_answer_0(&call, EINVAL); 70 71 async_answer_0(icall, EINVAL); … … 83 84 errno_t rc; 84 85 size_t size; 85 addr48_t mac;86 eth_addr_t mac; 86 87 87 88 ipc_call_t call; … … 97 98 } 98 99 99 rc = async_data_read_finalize(&call, &mac, sizeof( addr48_t));100 rc = async_data_read_finalize(&call, &mac, sizeof(eth_addr_t)); 100 101 if (rc != EOK) 101 102 async_answer_0(&call, rc); … … 189 190 } 190 191 191 if (size != sizeof( addr48_t)) {192 if (size != sizeof(eth_addr_t)) { 192 193 async_answer_0(&call, EINVAL); 193 194 async_answer_0(icall, EINVAL); … … 322 323 } 323 324 324 errno_t iplink_ev_change_addr(iplink_srv_t *srv, addr48_t *addr)325 errno_t iplink_ev_change_addr(iplink_srv_t *srv, eth_addr_t *addr) 325 326 { 326 327 if (srv->client_sess == NULL) … … 332 333 aid_t req = async_send_0(exch, IPLINK_EV_CHANGE_ADDR, &answer); 333 334 334 errno_t rc = async_data_write_start(exch, addr, sizeof( addr48_t));335 errno_t rc = async_data_write_start(exch, addr, sizeof(eth_addr_t)); 335 336 async_exchange_end(exch); 336 337
Note:
See TracChangeset
for help on using the changeset viewer.