Changeset 7af0cc5 in mainline
- Timestamp:
- 2013-09-20T16:46:56Z (11 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- bd88bee
- Parents:
- 947e2ef
- Files:
-
- 5 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
.bzrignore
r947e2ef r7af0cc5 269 269 uspace/dist/srv/dhcp 270 270 uspace/srv/net/dhcp/dhcp 271 uspace/dist/srv/nconfsrv 272 uspace/srv/net/nconfsrv/nconfsrv -
boot/Makefile.common
r947e2ef r7af0cc5 118 118 $(USPACE_PATH)/srv/net/inetsrv/inetsrv \ 119 119 $(USPACE_PATH)/srv/net/loopip/loopip \ 120 $(USPACE_PATH)/srv/net/nconfsrv/nconfsrv \ 120 121 $(USPACE_PATH)/srv/net/slip/slip \ 121 122 $(USPACE_PATH)/srv/net/tcp/tcp \ -
uspace/Makefile
r947e2ef r7af0cc5 95 95 srv/net/inetsrv \ 96 96 srv/net/loopip \ 97 srv/net/nconfsrv \ 97 98 srv/net/slip \ 98 99 srv/net/tcp \ -
uspace/lib/c/generic/inetcfg.c
r947e2ef r7af0cc5 267 267 } 268 268 269 int inetcfg_link_add(sysarg_t link_id) 270 { 271 async_exch_t *exch = async_exchange_begin(inetcfg_sess); 272 273 int rc = async_req_1_0(exch, INETCFG_LINK_ADD, link_id); 274 async_exchange_end(exch); 275 276 return rc; 277 } 278 269 279 int inetcfg_link_get(sysarg_t link_id, inet_link_info_t *linfo) 270 280 { … … 305 315 } 306 316 317 int inetcfg_link_remove(sysarg_t link_id) 318 { 319 async_exch_t *exch = async_exchange_begin(inetcfg_sess); 320 321 int rc = async_req_1_0(exch, INETCFG_LINK_REMOVE, link_id); 322 async_exchange_end(exch); 323 324 return rc; 325 } 326 307 327 int inetcfg_sroute_create(const char *name, inet_naddr_t *dest, 308 328 inet_addr_t *router, sysarg_t *sroute_id) -
uspace/lib/c/include/inet/inetcfg.h
r947e2ef r7af0cc5 48 48 extern int inetcfg_get_link_list(sysarg_t **, size_t *); 49 49 extern int inetcfg_get_sroute_list(sysarg_t **, size_t *); 50 extern int inetcfg_link_add(sysarg_t); 50 51 extern int inetcfg_link_get(sysarg_t, inet_link_info_t *); 52 extern int inetcfg_link_remove(sysarg_t); 51 53 extern int inetcfg_sroute_get(sysarg_t, inet_sroute_info_t *); 52 54 extern int inetcfg_sroute_get_id(const char *, sysarg_t *); -
uspace/lib/c/include/ipc/inet.h
r947e2ef r7af0cc5 72 72 INETCFG_GET_LINK_LIST, 73 73 INETCFG_GET_SROUTE_LIST, 74 INETCFG_LINK_ADD, 74 75 INETCFG_LINK_GET, 76 INETCFG_LINK_REMOVE, 75 77 INETCFG_SROUTE_CREATE, 76 78 INETCFG_SROUTE_DELETE, -
uspace/lib/c/include/ipc/services.h
r947e2ef r7af0cc5 59 59 #define SERVICE_NAME_INETPING "net/inetping" 60 60 #define SERVICE_NAME_INETPING6 "net/inetping6" 61 #define SERVICE_NAME_NETCONF "net/netconf" 61 62 62 63 #endif -
uspace/srv/net/inetsrv/inet_link.c
r947e2ef r7af0cc5 55 55 static uint16_t ip_ident = 0; 56 56 57 static int inet_link_open(service_id_t);58 57 static int inet_iplink_recv(iplink_t *, iplink_recv_sdu_t *, uint16_t); 59 58 … … 62 61 }; 63 62 64 static LIST_INITIALIZE(inet_link _list);65 static FIBRIL_MUTEX_INITIALIZE(inet_ discovery_lock);63 static LIST_INITIALIZE(inet_links); 64 static FIBRIL_MUTEX_INITIALIZE(inet_links_lock); 66 65 67 66 static addr128_t link_local_node_ip = … … 113 112 } 114 113 115 static int inet_link_check_new(void)116 {117 bool already_known;118 category_id_t iplink_cat;119 service_id_t *svcs;120 size_t count, i;121 int rc;122 123 fibril_mutex_lock(&inet_discovery_lock);124 125 rc = loc_category_get_id("iplink", &iplink_cat, IPC_FLAG_BLOCKING);126 if (rc != EOK) {127 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed resolving category 'iplink'.");128 fibril_mutex_unlock(&inet_discovery_lock);129 return ENOENT;130 }131 132 rc = loc_category_get_svcs(iplink_cat, &svcs, &count);133 if (rc != EOK) {134 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed getting list of IP links.");135 fibril_mutex_unlock(&inet_discovery_lock);136 return EIO;137 }138 139 for (i = 0; i < count; i++) {140 already_known = false;141 142 list_foreach(inet_link_list, link_list, inet_link_t, ilink) {143 if (ilink->svc_id == svcs[i]) {144 already_known = true;145 break;146 }147 }148 149 if (!already_known) {150 log_msg(LOG_DEFAULT, LVL_DEBUG, "Found IP link '%lu'",151 (unsigned long) svcs[i]);152 rc = inet_link_open(svcs[i]);153 if (rc != EOK)154 log_msg(LOG_DEFAULT, LVL_ERROR, "Could not open IP link.");155 }156 }157 158 fibril_mutex_unlock(&inet_discovery_lock);159 return EOK;160 }161 162 114 static inet_link_t *inet_link_new(void) 163 115 { … … 183 135 } 184 136 185 staticint inet_link_open(service_id_t sid)137 int inet_link_open(service_id_t sid) 186 138 { 187 139 inet_link_t *ilink; … … 231 183 232 184 log_msg(LOG_DEFAULT, LVL_DEBUG, "Opened IP link '%s'", ilink->svc_name); 233 list_append(&ilink->link_list, &inet_link _list);185 list_append(&ilink->link_list, &inet_links); 234 186 235 187 inet_addrobj_t *addr = NULL; … … 309 261 } 310 262 311 static void inet_link_cat_change_cb(void)312 {313 (void) inet_link_check_new();314 }315 316 int inet_link_discovery_start(void)317 {318 int rc;319 320 rc = loc_register_cat_change_cb(inet_link_cat_change_cb);321 if (rc != EOK) {322 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering callback for IP link "323 "discovery (%d).", rc);324 return rc;325 }326 327 return inet_link_check_new();328 }329 330 263 /** Send IPv4 datagram over Internet link 331 264 * … … 480 413 inet_link_t *inet_link_get_by_id(sysarg_t link_id) 481 414 { 482 fibril_mutex_lock(&inet_ discovery_lock);483 484 list_foreach(inet_link _list, link_list, inet_link_t, ilink) {415 fibril_mutex_lock(&inet_links_lock); 416 417 list_foreach(inet_links, link_list, inet_link_t, ilink) { 485 418 if (ilink->svc_id == link_id) { 486 fibril_mutex_unlock(&inet_ discovery_lock);419 fibril_mutex_unlock(&inet_links_lock); 487 420 return ilink; 488 421 } 489 422 } 490 423 491 fibril_mutex_unlock(&inet_ discovery_lock);424 fibril_mutex_unlock(&inet_links_lock); 492 425 return NULL; 493 426 } … … 499 432 size_t count, i; 500 433 501 fibril_mutex_lock(&inet_ discovery_lock);502 count = list_count(&inet_link _list);434 fibril_mutex_lock(&inet_links_lock); 435 count = list_count(&inet_links); 503 436 504 437 id_list = calloc(count, sizeof(sysarg_t)); 505 438 if (id_list == NULL) { 506 fibril_mutex_unlock(&inet_ discovery_lock);439 fibril_mutex_unlock(&inet_links_lock); 507 440 return ENOMEM; 508 441 } 509 442 510 443 i = 0; 511 list_foreach(inet_link _list, link_list, inet_link_t, ilink) {444 list_foreach(inet_links, link_list, inet_link_t, ilink) { 512 445 id_list[i++] = ilink->svc_id; 513 446 log_msg(LOG_DEFAULT, LVL_NOTE, "add link to list"); 514 447 } 515 448 516 fibril_mutex_unlock(&inet_ discovery_lock);449 fibril_mutex_unlock(&inet_links_lock); 517 450 518 451 log_msg(LOG_DEFAULT, LVL_NOTE, "return %zu links", count); -
uspace/srv/net/inetsrv/inet_link.h
r947e2ef r7af0cc5 41 41 #include "inetsrv.h" 42 42 43 extern int inet_link_ discovery_start(void);43 extern int inet_link_open(service_id_t); 44 44 extern int inet_link_send_dgram(inet_link_t *, addr32_t, 45 45 addr32_t, inet_dgram_t *, uint8_t, uint8_t, int); -
uspace/srv/net/inetsrv/inetcfg.c
r947e2ef r7af0cc5 1 1 /* 2 * Copyright (c) 201 2Jiri Svoboda2 * Copyright (c) 2013 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 160 160 } 161 161 162 static int inetcfg_link_add(sysarg_t link_id) 163 { 164 return inet_link_open(link_id); 165 } 166 162 167 static int inetcfg_link_get(sysarg_t link_id, inet_link_info_t *linfo) 163 168 { … … 180 185 } 181 186 187 static int inetcfg_link_remove(sysarg_t link_id) 188 { 189 return ENOTSUP; 190 } 191 182 192 static int inetcfg_sroute_create(char *name, inet_naddr_t *dest, 183 193 inet_addr_t *router, sysarg_t *sroute_id) … … 483 493 } 484 494 495 static void inetcfg_link_add_srv(ipc_callid_t callid, ipc_call_t *call) 496 { 497 sysarg_t link_id; 498 int rc; 499 500 log_msg(LOG_DEFAULT, LVL_DEBUG, "inetcfg_link_add_srv()"); 501 502 link_id = IPC_GET_ARG1(*call); 503 504 rc = inetcfg_link_add(link_id); 505 async_answer_0(callid, rc); 506 } 507 485 508 static void inetcfg_link_get_srv(ipc_callid_t callid, ipc_call_t *call) 486 509 { … … 536 559 } 537 560 561 static void inetcfg_link_remove_srv(ipc_callid_t callid, ipc_call_t *call) 562 { 563 sysarg_t link_id; 564 int rc; 565 566 log_msg(LOG_DEFAULT, LVL_DEBUG, "inetcfg_link_remove_srv()"); 567 568 link_id = IPC_GET_ARG1(*call); 569 570 rc = inetcfg_link_remove(link_id); 571 async_answer_0(callid, rc); 572 } 573 538 574 static void inetcfg_sroute_create_srv(ipc_callid_t iid, 539 575 ipc_call_t *icall) … … 742 778 inetcfg_get_sroute_list_srv(callid, &call); 743 779 break; 780 case INETCFG_LINK_ADD: 781 inetcfg_link_add_srv(callid, &call); 782 break; 744 783 case INETCFG_LINK_GET: 745 784 inetcfg_link_get_srv(callid, &call); 785 break; 786 case INETCFG_LINK_REMOVE: 787 inetcfg_link_remove_srv(callid, &call); 746 788 break; 747 789 case INETCFG_SROUTE_CREATE: -
uspace/srv/net/inetsrv/inetsrv.c
r947e2ef r7af0cc5 124 124 } 125 125 126 rc = inet_link_discovery_start();127 if (rc != EOK)128 return EEXIST;129 130 126 return EOK; 131 127 }
Note:
See TracChangeset
for help on using the changeset viewer.