03-22-2018 07:36 AM
Hi,
I hacked a quick fix together for everyone using kernel 4.10 or newer:
I made a quick git repo and a diff:
diff --git a/nikal.c b/nikal.c index e63534c..258813a 100644 --- a/nikal.c +++ b/nikal.c @@ -2038,14 +2038,6 @@ nNIKAL100_tBoolean nNIKAL200_isAddressableMemOver4G() #define NLNIKAL_CMD_SEND 1 -static struct genl_family nikal_netlink_family = -{ - .id = GENL_ID_GENERATE, - .name = "nlnikal", - .version = 1, - .maxattr = 1 -}; - static int nlnikal_msg(struct sk_buff *skb, struct genl_info *info) { return 0; } static struct genl_ops nikal_netlink_ops[] = @@ -2056,6 +2048,20 @@ static struct genl_ops nikal_netlink_ops[] = }, }; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) +#define GENL_ID_GENERATE 0 +#endif /* Linux 4.10.0 */ + +static struct genl_family nikal_netlink_family = +{ + .id = GENL_ID_GENERATE, + .name = "nlnikal", + .version = 1, + .maxattr = 1, + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) + .ops = nikal_netlink_ops, + #endif /* Linux 4.10.0 */ +}; static int __init nNIKAL100_initDriver(void) { @@ -2077,11 +2083,15 @@ static int __init nNIKAL100_initDriver(void) kref_init(&(nNIKAL200_sPALPseudoDevice.kref)); kref_init(&(nNIKAL200_sPALPseudoDeviceInterface.kref)); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) + return genl_register_family(&nikal_netlink_family); +#else #ifdef nNIKAL1400_kHasFamilyGenlOpsGroups if ((status = genl_register_family_with_ops(&nikal_netlink_family, nikal_netlink_ops))) return status; #else if ((status = genl_register_family_with_ops(&nikal_netlink_family, nikal_netlink_ops, 1))) return status; #endif +#endif nNIKAL200_sProcRootDir = proc_mkdir("driver/ni", NULL);
Have fun!