mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-30 05:58:22 +00:00
netdev: freeing of netdescs
This commit is contained in:
@@ -13,7 +13,8 @@ static void rx_dpc(context_t *context, dpcarg_t arg) {
|
||||
}
|
||||
|
||||
// requested size doesn't account for ethernet header or the virtio header
|
||||
static int loopback_allocdesc(size_t requestedsize, netdesc_t *desc) {
|
||||
static int loopback_allocdesc(netdev_t *netdev, size_t requestedsize, netdesc_t *desc) {
|
||||
__assert(requestedsize <= netdev->mtu);
|
||||
desc->address = alloc(requestedsize + sizeof(ethframe_t));
|
||||
if (desc->address == NULL)
|
||||
return ENOMEM;
|
||||
@@ -23,6 +24,11 @@ static int loopback_allocdesc(size_t requestedsize, netdesc_t *desc) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int loopback_freedesc(netdev_t *netdev, netdesc_t *desc) {
|
||||
free(desc->address);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int loopback_sendpacket(netdev_t *netdev, netdesc_t desc, mac_t targetmac, int proto) {
|
||||
desc.curroffset = 0;
|
||||
ethframe_t ethframe = {
|
||||
@@ -49,6 +55,7 @@ void loopback_init() {
|
||||
loopbacknetdev.mtu = 30000;
|
||||
loopbacknetdev.sendpacket = loopback_sendpacket;
|
||||
loopbacknetdev.allocdesc = loopback_allocdesc;
|
||||
loopbacknetdev.freedesc = loopback_freedesc;
|
||||
loopbacknetdev.ip = 0x7f000001;
|
||||
__assert(hashtable_init(&loopbacknetdev.arpcache, 30) == 0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user