/* 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; }
/* 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; }
/* 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; }
/* 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; }