/******************************************************************************
 * Copyright (c) 2013 IBM Corporation
 * All rights reserved.
 * This program and the accompanying materials
 * are made available under the terms of the BSD License
 * which accompanies this distribution, and is available at
 * http://www.opensource.org/licenses/bsd-license.php
 *
 * Contributors:
 *     IBM Corporation - initial implementation
 *****************************************************************************/

/*
 * libveth Forth wrapper
 */

#include <veth.h>

// : libveth-open  ( mac-addr-str len reg-str len -- false | [ driver true ] )
PRIM(LIBVETH_X2d_OPEN)
{
	int reg_len = TOS.u; POP;
	char *reg = TOS.a; POP;
	int len = TOS.u; POP;
	char *mac_addr = TOS.a;

	net_driver_t *net_driver = libveth_open(mac_addr, len, reg, reg_len);
	if (net_driver) {
		TOS.u = (unsigned long)net_driver; PUSH;
		TOS.n = -1;
	} else
		TOS.n = 0;
}
MIRP

// : libveth-close  ( driver -- )
PRIM(LIBVETH_X2d_CLOSE)
{
	net_driver_t *driver = TOS.a; POP;
	libveth_close(driver);
}
MIRP


// : libveth-read  ( addr len driver -- actual )
PRIM(LIBVETH_X2d_READ)
{
	net_driver_t *driver = TOS.a; POP;
	int len = TOS.u; POP;
	TOS.n = libveth_read(TOS.a, len, driver);
}
MIRP

// : libveth-write  ( addr len driver -- actual )
PRIM(LIBVETH_X2d_WRITE)
{
	net_driver_t *driver = TOS.a; POP;
	int len = TOS.u; POP;
	TOS.n = libveth_write(TOS.a, len, driver);
}
MIRP
