"XFRMA_REPLAY_ESN_VAL",
);
-#define END_OF_LIST -1
-
/**
* Algorithms for encryption
*/
/* {ENCR_CAMELLIA_CCM_ICV16, "***" }, */
{ENCR_SERPENT_CBC, "serpent" },
{ENCR_TWOFISH_CBC, "twofish" },
- {END_OF_LIST, NULL }
};
/**
/* {AUTH_DES_MAC, "***" }, */
/* {AUTH_KPDK_MD5, "***" }, */
{AUTH_AES_XCBC_96, "xcbc(aes)" },
- {END_OF_LIST, NULL }
};
/**
{IPCOMP_DEFLATE, "deflate" },
{IPCOMP_LZS, "lzs" },
{IPCOMP_LZJH, "lzjh" },
- {END_OF_LIST, NULL }
};
/**
static char* lookup_algorithm(transform_type_t type, int ikev2)
{
kernel_algorithm_t *list;
- char *name = NULL;
+ int i, count;
+ char *name;
switch (type)
{
case ENCRYPTION_ALGORITHM:
list = encryption_algs;
+ count = countof(encryption_algs);
break;
case INTEGRITY_ALGORITHM:
list = integrity_algs;
+ count = countof(integrity_algs);
break;
case COMPRESSION_ALGORITHM:
list = compression_algs;
+ count = countof(compression_algs);
break;
default:
return NULL;
}
- while (list->ikev2 != END_OF_LIST)
+ for (i = 0; i < count; i++)
{
- if (list->ikev2 == ikev2)
+ if (list[i].ikev2 == ikev2)
{
- return list->name;
+ return list[i].name;
}
- list++;
}
- hydra->kernel_interface->lookup_algorithm(hydra->kernel_interface, ikev2,
- type, NULL, &name);
- return name;
+ if (hydra->kernel_interface->lookup_algorithm(hydra->kernel_interface,
+ ikev2, type, NULL, &name))
+ {
+ return name;
+ }
+ return NULL;
}
typedef struct private_kernel_netlink_ipsec_t private_kernel_netlink_ipsec_t;