Changeset 347768d in mainline for uspace/srv/inet/inet_link.c
- Timestamp:
- 2012-04-11T05:52:47Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7f95c904
- Parents:
- 7094e196
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/inet/inet_link.c
r7094e196 r347768d 161 161 162 162 ilink->svc_id = sid; 163 ilink->iplink = NULL; 163 164 164 165 rc = loc_service_get_name(sid, &ilink->svc_name); … … 177 178 if (rc != EOK) { 178 179 log_msg(LVL_ERROR, "Failed opening IP link '%s'", 180 ilink->svc_name); 181 goto error; 182 } 183 184 rc = iplink_get_mtu(ilink->iplink, &ilink->def_mtu); 185 if (rc != EOK) { 186 log_msg(LVL_ERROR, "Failed determinning MTU of link '%s'", 179 187 ilink->svc_name); 180 188 goto error; … … 211 219 212 220 error: 221 if (ilink->iplink != NULL) 222 iplink_close(ilink->iplink); 213 223 inet_link_delete(ilink); 214 224 return rc; … … 241 251 inet_packet_t packet; 242 252 int rc; 243 244 /* XXX Fragment packet */ 253 size_t offs, roffs; 254 255 /* 256 * Fill packet structure. Fragmentation is performed by 257 * inet_pdu_encode(). 258 */ 245 259 packet.src = dgram->src; 246 260 packet.dest = dgram->dest; … … 254 268 sdu.lsrc.ipv4 = lsrc->ipv4; 255 269 sdu.ldest.ipv4 = ldest->ipv4; 256 rc = inet_pdu_encode(&packet, &sdu.data, &sdu.size); 257 if (rc != EOK) 258 return rc; 259 260 rc = iplink_send(ilink->iplink, &sdu); 261 free(sdu.data); 270 271 offs = 0; 272 do { 273 /* Encode one fragment */ 274 rc = inet_pdu_encode(&packet, offs, ilink->def_mtu, &sdu.data, 275 &sdu.size, &roffs); 276 if (rc != EOK) 277 return rc; 278 279 /* Send the PDU */ 280 rc = iplink_send(ilink->iplink, &sdu); 281 free(sdu.data); 282 283 offs = roffs; 284 } while (offs < packet.size); 262 285 263 286 return rc;
Note:
See TracChangeset
for help on using the changeset viewer.