Changeset 0e94b979 in mainline for uspace/srv/inet/inetcfg.c
- Timestamp:
- 2012-03-08T21:12:44Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 291c792
- Parents:
- a88a6eac
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/inet/inetcfg.c
ra88a6eac r0e94b979 42 42 #include <loc.h> 43 43 #include <stdlib.h> 44 #include <str.h> 44 45 #include <sys/types.h> 45 46 … … 67 68 addr->naddr = *naddr; 68 69 addr->ilink = ilink; 70 addr->name = str_dup("foo"); 69 71 inet_addrobj_add(addr); 70 72 … … 88 90 static int inetcfg_addr_get(sysarg_t addr_id, inet_addr_info_t *ainfo) 89 91 { 92 inet_addrobj_t *addr; 93 94 addr = inet_addrobj_get_by_id(addr_id); 95 if (addr == NULL) 96 return ENOENT; 97 98 ainfo->naddr = addr->naddr; 99 ainfo->ilink = addr->ilink->svc_id; 100 ainfo->name = str_dup(addr->name); 101 102 return EOK; 103 } 104 105 static int inetcfg_get_addr_list(sysarg_t **addrs, size_t *count) 106 { 107 return inet_addrobj_get_id_list(addrs, count); 108 } 109 110 static int inetcfg_get_link_list(sysarg_t **addrs, size_t *count) 111 { 90 112 return ENOTSUP; 91 113 } 92 114 93 static int inetcfg_get_addr_list(sysarg_t **addrs, size_t *count) 94 { 95 return ENOTSUP; 96 } 97 98 static int inetcfg_get_link_list(sysarg_t **addrs, size_t *count) 99 { 100 return ENOTSUP; 101 } 102 103 static int inetcfg_link_get(sysarg_t addr_id, inet_link_info_t *ainfo) 104 { 105 return ENOTSUP; 115 static int inetcfg_link_get(sysarg_t link_id, inet_link_info_t *linfo) 116 { 117 inet_link_t *ilink; 118 119 ilink = inet_link_get_by_id(link_id); 120 if (ilink == NULL) { 121 return ENOENT; 122 } 123 124 linfo->name = str_dup(ilink->svc_name); 125 return EOK; 106 126 } 107 127 … … 140 160 static void inetcfg_addr_get_srv(ipc_callid_t callid, ipc_call_t *call) 141 161 { 162 ipc_callid_t rcallid; 163 size_t max_size; 164 142 165 sysarg_t addr_id; 143 166 inet_addr_info_t ainfo; … … 147 170 log_msg(LVL_DEBUG, "inetcfg_addr_get_srv()"); 148 171 172 ainfo.naddr.ipv4 = 0; 173 ainfo.naddr.bits = 0; 174 ainfo.ilink = 0; 175 ainfo.name = NULL; 176 177 if (!async_data_read_receive(&rcallid, &max_size)) { 178 async_answer_0(rcallid, EREFUSED); 179 async_answer_0(callid, EREFUSED); 180 return; 181 } 182 149 183 rc = inetcfg_addr_get(addr_id, &ainfo); 150 async_answer_2(callid, rc, ainfo.naddr.ipv4, ainfo.naddr.bits); 184 if (rc != EOK) { 185 async_answer_0(callid, rc); 186 return; 187 } 188 189 sysarg_t retval = async_data_read_finalize(rcallid, ainfo.name, 190 min(max_size, str_size(ainfo.name))); 191 free(ainfo.name); 192 193 async_answer_3(callid, retval, ainfo.naddr.ipv4, ainfo.naddr.bits, 194 ainfo.ilink); 151 195 } 152 196 153 197 154 198 static void inetcfg_get_addr_list_srv(ipc_callid_t callid, ipc_call_t *call) 199 { 200 ipc_callid_t rcallid; 201 size_t count; 202 size_t max_size; 203 size_t act_size; 204 size_t size; 205 sysarg_t *id_buf; 206 int rc; 207 208 log_msg(LVL_DEBUG, "inetcfg_get_addr_list_srv()"); 209 210 if (!async_data_read_receive(&rcallid, &max_size)) { 211 async_answer_0(rcallid, EREFUSED); 212 async_answer_0(callid, EREFUSED); 213 return; 214 } 215 216 rc = inetcfg_get_addr_list(&id_buf, &count); 217 if (rc != EOK) { 218 async_answer_0(rcallid, rc); 219 async_answer_0(callid, rc); 220 return; 221 } 222 223 act_size = count * sizeof(sysarg_t); 224 size = min(act_size, max_size); 225 226 sysarg_t retval = async_data_read_finalize(rcallid, id_buf, size); 227 free(id_buf); 228 229 async_answer_1(callid, retval, act_size); 230 } 231 232 static void inetcfg_link_get_srv(ipc_callid_t callid, ipc_call_t *call) 233 { 234 ipc_callid_t rcallid; 235 size_t max_size; 236 237 sysarg_t link_id; 238 inet_link_info_t linfo; 239 int rc; 240 241 link_id = IPC_GET_ARG1(*call); 242 log_msg(LVL_DEBUG, "inetcfg_link_get_srv()"); 243 244 linfo.name = NULL; 245 246 if (!async_data_read_receive(&rcallid, &max_size)) { 247 async_answer_0(rcallid, EREFUSED); 248 async_answer_0(callid, EREFUSED); 249 return; 250 } 251 252 rc = inetcfg_link_get(link_id, &linfo); 253 if (rc != EOK) { 254 async_answer_0(rcallid, rc); 255 async_answer_0(callid, rc); 256 return; 257 } 258 259 sysarg_t retval = async_data_read_finalize(rcallid, linfo.name, 260 min(max_size, str_size(linfo.name))); 261 free(linfo.name); 262 263 async_answer_0(callid, retval); 264 } 265 266 static void inetcfg_get_link_list_srv(ipc_callid_t callid, ipc_call_t *call) 155 267 { 156 268 ipc_callid_t rcallid; … … 161 273 int rc; 162 274 163 log_msg(LVL_DEBUG, "inetcfg_get_addr_list_srv()");164 165 if (!async_data_read_receive(&rcallid, &max_size)) {166 async_answer_0(rcallid, EREFUSED);167 async_answer_0(callid, EREFUSED);168 return;169 }170 171 rc = inetcfg_get_addr_list(&id_buf, &act_size);172 if (rc != EOK) {173 async_answer_0(rcallid, rc);174 async_answer_0(callid, rc);175 return;176 }177 178 size = min(act_size, max_size);179 180 sysarg_t retval = async_data_read_finalize(rcallid, id_buf, size);181 free(id_buf);182 183 async_answer_1(callid, retval, act_size);184 }185 186 static void inetcfg_link_get_srv(ipc_callid_t callid, ipc_call_t *call)187 {188 sysarg_t link_id;189 inet_link_info_t linfo;190 int rc;191 192 link_id = IPC_GET_ARG1(*call);193 log_msg(LVL_DEBUG, "inetcfg_link_get_srv()");194 195 rc = inetcfg_link_get(link_id, &linfo);196 async_answer_0(callid, rc);197 }198 199 static void inetcfg_get_link_list_srv(ipc_callid_t callid, ipc_call_t *call)200 {201 ipc_callid_t rcallid;202 size_t max_size;203 size_t act_size;204 size_t size;205 sysarg_t *id_buf;206 int rc;207 208 275 log_msg(LVL_DEBUG, "inetcfg_get_link_list_srv()"); 209 276
Note:
See TracChangeset
for help on using the changeset viewer.