/* DF-3426 rig shim: side table backing WNA(ifp).  See wna_shim.h. */
#include <sys/types.h>
#include <net/if_var.h>
#include "wna_shim.h"

#define WNA_TBL 16

static struct ifnet *wna_key[WNA_TBL];
static struct netmap_adapter *wna_val[WNA_TBL];

struct netmap_adapter **
netmap_wna_slot(struct ifnet *ifp)
{
	int i, free_i = -1;

	for (i = 0; i < WNA_TBL; i++) {
		if (wna_key[i] == ifp)
			return (&wna_val[i]);
		if (wna_key[i] == NULL && free_i < 0)
			free_i = i;
	}
	if (free_i < 0)
		return (NULL);	/* rig uses <= 2 interfaces; unreachable */
	wna_key[free_i] = ifp;
	wna_val[free_i] = NULL;
	return (&wna_val[free_i]);
}
