Exemplo n.º 1
0
/* PXENV_UNDI_OPEN
 *
 * Status: working
 */
static PXENV_EXIT_t pxenv_undi_open ( struct s_PXENV_UNDI_OPEN *undi_open ) {
	int rc;

	DBGC ( &pxe_netdev, "PXENV_UNDI_OPEN flag %04x filter %04x",
	       undi_open->OpenFlag, undi_open->PktFilter );
	pxe_dump_mcast_list ( &undi_open->R_Mcast_Buf );
	DBGC ( &pxe_netdev, "\n" );

	/* Sanity check */
	if ( ! pxe_netdev ) {
		DBGC ( &pxe_netdev, "PXENV_UNDI_OPEN called with no "
		       "network device\n" );
		undi_open->Status = PXENV_STATUS_UNDI_INVALID_STATE;
		return PXENV_EXIT_FAILURE;
	}

	/* Open network device */
	if ( ( rc = pxe_netdev_open() ) != 0 ) {
		DBGC ( &pxe_netdev, "PXENV_UNDI_OPEN could not open %s: %s\n",
		       pxe_netdev->name, strerror ( rc ) );
		undi_open->Status = PXENV_STATUS ( rc );
		return PXENV_EXIT_FAILURE;
	}

	undi_open->Status = PXENV_STATUS_SUCCESS;
	return PXENV_EXIT_SUCCESS;
}
Exemplo n.º 2
0
/* PXENV_UNDI_RESET_ADAPTER
 *
 * Status: working
 */
static PXENV_EXIT_t
pxenv_undi_reset_adapter ( struct s_PXENV_UNDI_RESET *undi_reset_adapter ) {
	int rc;

	DBGC ( &pxe_netdev, "PXENV_UNDI_RESET_ADAPTER" );
	pxe_dump_mcast_list ( &undi_reset_adapter->R_Mcast_Buf );
	DBGC ( &pxe_netdev, "\n" );

	/* Sanity check */
	if ( ! pxe_netdev ) {
		DBGC ( &pxe_netdev, "PXENV_UNDI_RESET_ADAPTER called with no "
		       "network device\n" );
		undi_reset_adapter->Status = PXENV_STATUS_UNDI_INVALID_STATE;
		return PXENV_EXIT_FAILURE;
	}

	/* Close and reopen network device */
	pxe_netdev_close();
	if ( ( rc = pxe_netdev_open() ) != 0 ) {
		DBGC ( &pxe_netdev, "PXENV_UNDI_RESET_ADAPTER could not "
		       "reopen %s: %s\n", pxe_netdev->name, strerror ( rc ) );
		undi_reset_adapter->Status = PXENV_STATUS ( rc );
		return PXENV_EXIT_FAILURE;
	}

	undi_reset_adapter->Status = PXENV_STATUS_SUCCESS;
	return PXENV_EXIT_SUCCESS;
}
Exemplo n.º 3
0
/* PXENV_UNDI_OPEN
 *
 * Status: working
 */
PXENV_EXIT_t pxenv_undi_open ( struct s_PXENV_UNDI_OPEN *undi_open ) {
	int rc;

	DBG ( "PXENV_UNDI_OPEN flag %04x filter %04x",
	      undi_open->OpenFlag, undi_open->PktFilter );
	pxe_dump_mcast_list ( &undi_open->R_Mcast_Buf );
	DBG ( "\n" );

	if ( ( rc = pxe_netdev_open() ) != 0 ) {
		DBG ( "PXENV_UNDI_OPEN could not open %s: %s\n",
		      pxe_netdev->name, strerror ( rc ) );
		undi_open->Status = PXENV_STATUS ( rc );
		return PXENV_EXIT_FAILURE;
	}

	undi_open->Status = PXENV_STATUS_SUCCESS;
	return PXENV_EXIT_SUCCESS;
}
Exemplo n.º 4
0
/* PXENV_UNDI_RESET_ADAPTER
 *
 * Status: working
 */
PXENV_EXIT_t pxenv_undi_reset_adapter ( struct s_PXENV_UNDI_RESET
					*undi_reset_adapter ) {
	int rc;

	DBG ( "PXENV_UNDI_RESET_ADAPTER" );
	pxe_dump_mcast_list ( &undi_reset_adapter->R_Mcast_Buf );
	DBG ( "\n" );

	pxe_netdev_close();
	if ( ( rc = pxe_netdev_open() ) != 0 ) {
		DBG ( "PXENV_UNDI_RESET_ADAPTER could not reopen %s: %s\n",
		      pxe_netdev->name, strerror ( rc ) );
		undi_reset_adapter->Status = PXENV_STATUS ( rc );
		return PXENV_EXIT_FAILURE;
	}

	undi_reset_adapter->Status = PXENV_STATUS_SUCCESS;
	return PXENV_EXIT_SUCCESS;
}