static void xfrm_auth_trunc_print(struct xfrm_algo_auth *algo, int len, FILE *fp, const char *prefix) { struct xfrm_algo *base_algo = alloca(sizeof(*base_algo) + algo->alg_key_len / 8); memcpy(base_algo->alg_name, algo->alg_name, sizeof(base_algo->alg_name)); base_algo->alg_key_len = algo->alg_key_len; memcpy(base_algo->alg_key, algo->alg_key, algo->alg_key_len / 8); __xfrm_algo_print(base_algo, XFRMA_ALG_AUTH_TRUNC, len, fp, prefix, 0); fprintf(fp, " %d", algo->alg_trunc_len); fprintf(fp, "%s", _SL_); }
static void xfrm_aead_print(struct xfrm_algo_aead *algo, int len, FILE *fp, const char *prefix) { struct { struct xfrm_algo algo; char key[algo->alg_key_len / 8]; } base; memcpy(base.algo.alg_name, algo->alg_name, sizeof(base.algo.alg_name)); base.algo.alg_key_len = algo->alg_key_len; memcpy(base.algo.alg_key, algo->alg_key, algo->alg_key_len / 8); __xfrm_algo_print(&base.algo, XFRMA_ALG_AEAD, len, fp, prefix, 0); fprintf(fp, " %d", algo->alg_icv_len); fprintf(fp, "%s", _SL_); }
static inline void xfrm_algo_print(struct xfrm_algo *algo, int type, int len, FILE *fp, const char *prefix) { return __xfrm_algo_print(algo, type, len, fp, prefix, 1); }