Changeset fa101c4 in mainline for uspace/srv
- Timestamp:
- 2012-03-08T22:30:19Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 637a3b4
- Parents:
- 291c792
- Location:
- uspace/srv/inet
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/inet/addrobj.c
r291c792 rfa101c4 41 41 #include <ipc/loc.h> 42 42 #include <stdlib.h> 43 #include <str.h> 43 44 44 45 #include "addrobj.h" … … 119 120 fibril_mutex_unlock(&addr_list_lock); 120 121 log_msg(LVL_DEBUG, "inet_addrobj_find: found %p", 121 addr);122 naddr); 122 123 return naddr; 123 124 } … … 125 126 126 127 log_msg(LVL_DEBUG, "inet_addrobj_find: Not found"); 128 fibril_mutex_unlock(&addr_list_lock); 129 130 return NULL; 131 } 132 133 /** Find address object on a link, with a specific name. 134 * 135 * @param name Address object name 136 * @param ilink Inet link 137 * @return Address object 138 */ 139 inet_addrobj_t *inet_addrobj_find_by_name(const char *name, inet_link_t *ilink) 140 { 141 log_msg(LVL_DEBUG, "inet_addrobj_find_by_name('%s', '%s')", 142 name, ilink->svc_name); 143 144 fibril_mutex_lock(&addr_list_lock); 145 146 list_foreach(addr_list, link) { 147 inet_addrobj_t *naddr = list_get_instance(link, 148 inet_addrobj_t, addr_list); 149 150 if (naddr->ilink == ilink && str_cmp(naddr->name, name) == 0) { 151 fibril_mutex_unlock(&addr_list_lock); 152 log_msg(LVL_DEBUG, "inet_addrobj_find_by_name: found %p", 153 naddr); 154 return naddr; 155 } 156 } 157 158 log_msg(LVL_DEBUG, "inet_addrobj_find_by_name: Not found"); 127 159 fibril_mutex_unlock(&addr_list_lock); 128 160 -
uspace/srv/inet/addrobj.h
r291c792 rfa101c4 53 53 extern void inet_addrobj_remove(inet_addrobj_t *); 54 54 extern inet_addrobj_t *inet_addrobj_find(inet_addr_t *, inet_addrobj_find_t); 55 extern inet_addrobj_t *inet_addrobj_find_by_name(const char *, inet_link_t *); 55 56 extern inet_addrobj_t *inet_addrobj_get_by_id(sysarg_t); 56 57 extern int inet_addrobj_send_dgram(inet_addrobj_t *, inet_dgram_t *, -
uspace/srv/inet/inetcfg.c
r291c792 rfa101c4 85 85 static int inetcfg_addr_delete(sysarg_t addr_id) 86 86 { 87 return ENOTSUP; 87 inet_addrobj_t *addr; 88 89 addr = inet_addrobj_get_by_id(addr_id); 90 if (addr == NULL) 91 return ENOENT; 92 93 inet_addrobj_remove(addr); 94 inet_addrobj_delete(addr); 95 96 return EOK; 88 97 } 89 98 … … 100 109 ainfo->name = str_dup(addr->name); 101 110 111 return EOK; 112 } 113 114 static int inetcfg_addr_get_id(char *name, sysarg_t link_id, sysarg_t *addr_id) 115 { 116 inet_link_t *ilink; 117 inet_addrobj_t *addr; 118 119 ilink = inet_link_get_by_id(link_id); 120 if (ilink == NULL) { 121 log_msg(LVL_DEBUG, "Link %zu not found.", (size_t) link_id); 122 return ENOENT; 123 } 124 125 addr = inet_addrobj_find_by_name(name, ilink); 126 if (addr == NULL) { 127 log_msg(LVL_DEBUG, "Address '%s' not found.", name); 128 return ENOENT; 129 } 130 131 *addr_id = addr->id; 102 132 return EOK; 103 133 } … … 202 232 async_answer_3(callid, retval, ainfo.naddr.ipv4, ainfo.naddr.bits, 203 233 ainfo.ilink); 234 } 235 236 static void inetcfg_addr_get_id_srv(ipc_callid_t callid, ipc_call_t *call) 237 { 238 char *name; 239 sysarg_t link_id; 240 sysarg_t addr_id; 241 int rc; 242 243 log_msg(LVL_DEBUG, "inetcfg_addr_get_id_srv()"); 244 245 link_id = IPC_GET_ARG1(*call); 246 247 rc = async_data_write_accept((void **) &name, true, 0, LOC_NAME_MAXLEN, 248 0, NULL); 249 if (rc != EOK) { 250 async_answer_0(callid, rc); 251 return; 252 } 253 254 addr_id = 0; 255 rc = inetcfg_addr_get_id(name, link_id, &addr_id); 256 free(name); 257 async_answer_1(callid, rc, addr_id); 204 258 } 205 259 … … 333 387 inetcfg_addr_get_srv(callid, &call); 334 388 break; 389 case INETCFG_ADDR_GET_ID: 390 inetcfg_addr_get_id_srv(callid, &call); 391 break; 335 392 case INETCFG_GET_ADDR_LIST: 336 393 inetcfg_get_addr_list_srv(callid, &call);
Note:
See TracChangeset
for help on using the changeset viewer.
