Changes in uspace/lib/c/generic/iplink_srv.c [25a179e:8d2dd7f2] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/iplink_srv.c
r25a179e r8d2dd7f2 78 78 async_answer_0(callid, rc); 79 79 80 async_answer_0(iid, rc);80 async_answer_0(iid, (sysarg_t) rc); 81 81 } 82 82 … … 89 89 ipc_callid_t callid; 90 90 91 rc = async_data_write_receive(&callid, &size); 92 if (rc != EOK) { 93 async_answer_0(callid, (sysarg_t) rc); 94 async_answer_0(iid, (sysarg_t) rc); 95 } 96 97 rc = srv->ops->set_mac48(srv, &mac); 98 if (rc != EOK) { 99 async_answer_0(iid, rc); 100 return; 101 } 102 103 rc = async_data_read_finalize(callid, &mac, sizeof(addr48_t)); 104 if (rc != EOK) 105 async_answer_0(callid, rc); 106 107 async_answer_0(iid, (sysarg_t) rc); 108 } 109 110 static void iplink_addr_add_srv(iplink_srv_t *srv, ipc_callid_t iid, 111 ipc_call_t *icall) 112 { 113 ipc_callid_t callid; 114 size_t size; 91 115 if (!async_data_write_receive(&callid, &size)) { 92 116 async_answer_0(callid, EREFUSED); 93 117 async_answer_0(iid, EREFUSED); 94 } 95 96 rc = srv->ops->set_mac48(srv, &mac); 97 if (rc != EOK) { 98 async_answer_0(iid, rc); 99 return; 100 } 101 102 rc = async_data_read_finalize(callid, &mac, sizeof(addr48_t)); 103 if (rc != EOK) 104 async_answer_0(callid, rc); 105 106 async_answer_0(iid, rc); 107 } 108 109 static void iplink_addr_add_srv(iplink_srv_t *srv, ipc_callid_t iid, 118 return; 119 } 120 121 if (size != sizeof(inet_addr_t)) { 122 async_answer_0(callid, EINVAL); 123 async_answer_0(iid, EINVAL); 124 return; 125 } 126 127 inet_addr_t addr; 128 int rc = async_data_write_finalize(callid, &addr, size); 129 if (rc != EOK) { 130 async_answer_0(callid, (sysarg_t) rc); 131 async_answer_0(iid, (sysarg_t) rc); 132 } 133 134 rc = srv->ops->addr_add(srv, &addr); 135 async_answer_0(iid, (sysarg_t) rc); 136 } 137 138 static void iplink_addr_remove_srv(iplink_srv_t *srv, ipc_callid_t iid, 110 139 ipc_call_t *icall) 111 140 { … … 127 156 int rc = async_data_write_finalize(callid, &addr, size); 128 157 if (rc != EOK) { 129 async_answer_0(callid, rc); 158 async_answer_0(callid, (sysarg_t) rc); 159 async_answer_0(iid, (sysarg_t) rc); 160 } 161 162 rc = srv->ops->addr_remove(srv, &addr); 163 async_answer_0(iid, (sysarg_t) rc); 164 } 165 166 static void iplink_send_srv(iplink_srv_t *srv, ipc_callid_t iid, 167 ipc_call_t *icall) 168 { 169 iplink_sdu_t sdu; 170 171 sdu.src = IPC_GET_ARG1(*icall); 172 sdu.dest = IPC_GET_ARG2(*icall); 173 174 int rc = async_data_write_accept(&sdu.data, false, 0, 0, 0, 175 &sdu.size); 176 if (rc != EOK) { 130 177 async_answer_0(iid, rc); 131 } 132 133 rc = srv->ops->addr_add(srv, &addr); 178 return; 179 } 180 181 rc = srv->ops->send(srv, &sdu); 182 free(sdu.data); 134 183 async_answer_0(iid, rc); 135 184 } 136 185 137 static void iplink_addr_remove_srv(iplink_srv_t *srv, ipc_callid_t iid, 138 ipc_call_t *icall) 139 { 186 static void iplink_send6_srv(iplink_srv_t *srv, ipc_callid_t iid, 187 ipc_call_t *icall) 188 { 189 iplink_sdu6_t sdu; 190 140 191 ipc_callid_t callid; 141 192 size_t size; … … 146 197 } 147 198 148 if (size != sizeof(inet_addr_t)) {149 async_answer_0(callid, EINVAL);150 async_answer_0(iid, EINVAL);151 return;152 }153 154 inet_addr_t addr;155 int rc = async_data_write_finalize(callid, &addr, size);156 if (rc != EOK) {157 async_answer_0(callid, rc);158 async_answer_0(iid, rc);159 }160 161 rc = srv->ops->addr_remove(srv, &addr);162 async_answer_0(iid, rc);163 }164 165 static void iplink_send_srv(iplink_srv_t *srv, ipc_callid_t iid,166 ipc_call_t *icall)167 {168 iplink_sdu_t sdu;169 170 sdu.src = IPC_GET_ARG1(*icall);171 sdu.dest = IPC_GET_ARG2(*icall);172 173 int rc = async_data_write_accept(&sdu.data, false, 0, 0, 0,174 &sdu.size);175 if (rc != EOK) {176 async_answer_0(iid, rc);177 return;178 }179 180 rc = srv->ops->send(srv, &sdu);181 free(sdu.data);182 async_answer_0(iid, rc);183 }184 185 static void iplink_send6_srv(iplink_srv_t *srv, ipc_callid_t iid,186 ipc_call_t *icall)187 {188 iplink_sdu6_t sdu;189 190 ipc_callid_t callid;191 size_t size;192 if (!async_data_write_receive(&callid, &size)) {193 async_answer_0(callid, EREFUSED);194 async_answer_0(iid, EREFUSED);195 return;196 }197 198 199 if (size != sizeof(addr48_t)) { 199 200 async_answer_0(callid, EINVAL); … … 204 205 int rc = async_data_write_finalize(callid, &sdu.dest, size); 205 206 if (rc != EOK) { 206 async_answer_0(callid, rc);207 async_answer_0(iid, rc);207 async_answer_0(callid, (sysarg_t) rc); 208 async_answer_0(iid, (sysarg_t) rc); 208 209 } 209 210 … … 321 322 } 322 323 323 int retval;324 sysarg_t retval; 324 325 async_wait_for(req, &retval); 325 326 if (retval != EOK) … … 347 348 } 348 349 349 int retval;350 sysarg_t retval; 350 351 async_wait_for(req, &retval); 351 352 if (retval != EOK)
Note:
See TracChangeset
for help on using the changeset viewer.