Os campos num_private e num_private_args são definidos apenas quando o CONFIG_WEXT_PRIV é definido durante a compilação do kernel, portanto, é necessário adicionar as linhas # ifdef / # endif aqui ao iw_ndis.c:
const struct iw_handler_def ndis_handler_def = {
.num_standard = sizeof(ndis_handler) / sizeof(ndis_handler[0]),
#ifdef CONFIG_WEXT_PRIV
.num_private = sizeof(priv_handler) / sizeof(priv_handler[0]),
.num_private_args = sizeof(priv_args) / sizeof(priv_args[0]),
#endif
.standard = (iw_handler *)ndis_handler,
#ifdef CONFIG_WEXT_PRIV
.private = (iw_handler *)priv_handler,
.private_args = (struct iw_priv_args *)priv_args,
#endif
.get_wireless_stats = get_iw_stats,
};
No entanto, isso não é tudo. Você também obterá um erro ao compilar o wrapndis.c , para que você precise encontrar as linhas com a seguinte instrução if (na linha aproximada 1820) e envolvê-la em um # ifdef / # endif.
#ifdef CONFIG_WEXT_PRIV
if (wnd- > physical_medium == NdisPhysicalMediumWirelessLan) {
net_dev- > wireless_handlers = & amp; ndis_handler_def;
} #endif
Devo acrescentar que estou tentando compilar isso sozinho e não testei o ndiswrapper tendo feito isso para o YMMV.
O acima para o wrapndis está errado, parece que CONFIG_WIRELESS_EXT não está definido na (minha) configuração do kernel. Se fosse então eu não deveria receber este erro.