portBASE_TYPE xNetifInit( void ) { portBASE_TYPE x; pcap_if_t *pxAllNetworkInterfaces; /* Allocate a free buffer to each buffer pointer. */ for( x = 0; x < sizeof( pucEthernetBufferPointers ) / sizeof( unsigned char * ); x++ ) { pucEthernetBufferPointers[ x ] = &( ucEthernetBuffer[ x ][ 0 ] ); } /* Start with uip_buf pointing to a buffer that is not referenced from the pucEthernetBufferPointers[] array. */ uip_buf = &( ucEthernetBuffer[ archNUM_BUFFERS - 1 ][ 0 ] ); /* Query the computer the simulation is being executed on to find the network interfaces it has installed. */ pxAllNetworkInterfaces = prvPrintAvailableNetworkInterfaces(); /* Open the network interface. The number of the interface to be opened is set by the configNETWORK_INTERFACE_TO_USE constant in FreeRTOSConfig.h. Calling this function will set the pxOpenedInterfaceHandle variable. If, after calling this function, pxOpenedInterfaceHandle is equal to NULL, then the interface could not be opened. */ if( pxAllNetworkInterfaces != NULL ) { prvOpenSelectedNetworkInterface( pxAllNetworkInterfaces ); } return x; }
/** * In this function, the hardware should be initialized. * Called from ethernetif_init(). * * @param pxNetIf the already initialized lwip network interface structure * for this ethernetif. */ static void prvLowLevelInit( struct netif *pxNetIf ) { pcap_if_t *pxAllNetworkInterfaces; /* set MAC hardware address length */ pxNetIf->hwaddr_len = ETHARP_HWADDR_LEN; /* set MAC hardware address */ pxNetIf->hwaddr[ 0 ] = configMAC_ADDR0; pxNetIf->hwaddr[ 1 ] = configMAC_ADDR1; pxNetIf->hwaddr[ 2 ] = configMAC_ADDR2; pxNetIf->hwaddr[ 3 ] = configMAC_ADDR3; pxNetIf->hwaddr[ 4 ] = configMAC_ADDR4; pxNetIf->hwaddr[ 5 ] = configMAC_ADDR5; /* device capabilities */ /* don't set pxNetIf_FLAG_ETHARP if this device is not an ethernet one */ pxNetIf->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP; /* Query the computer the simulation is being executed on to find the network interfaces it has installed. */ pxAllNetworkInterfaces = prvPrintAvailableNetworkInterfaces(); /* Open the network interface. The number of the interface to be opened is set by the configNETWORK_INTERFACE_TO_USE constant in FreeRTOSConfig.h. Calling this function will set the pxOpenedInterfaceHandle variable. If, after calling this function, pxOpenedInterfaceHandle is equal to NULL, then the interface could not be opened. */ if( pxAllNetworkInterfaces != NULL ) { prvOpenSelectedNetworkInterface( pxAllNetworkInterfaces ); } /* Remember which interface was opened as it is used in the interrupt simulator task. */ pxlwIPNetIf = pxNetIf; }