name.c 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "unp.h"
  2. #include <net/pfkeyv2.h>
  3. struct idlist {
  4. int val;
  5. const char *name;
  6. };
  7. static struct idlist satype[] = {
  8. { SADB_SATYPE_UNSPEC, "unspec" },
  9. { SADB_SATYPE_AH, "ah" },
  10. { SADB_SATYPE_ESP, "esp" },
  11. { SADB_SATYPE_RSVP, "rsvp" },
  12. { SADB_SATYPE_OSPFV2, "ospfv2" },
  13. { SADB_SATYPE_RIPV2, "ripv2" },
  14. { SADB_SATYPE_MIP, "mip" },
  15. { 0, NULL } };
  16. static struct idlist ahalg[] = {
  17. { SADB_AALG_NONE, "none" },
  18. { SADB_AALG_MD5HMAC, "HMAC-MD5-96" },
  19. { SADB_AALG_SHA1HMAC, "HMAC-SHA-1-96" },
  20. { 0, NULL } };
  21. static struct idlist espalg[] = {
  22. { SADB_EALG_NONE, "none" },
  23. { SADB_EALG_DESCBC, "DES-CBC" },
  24. { SADB_EALG_3DESCBC, "3DES-CBC" },
  25. { SADB_EALG_NULL, "NULL" },
  26. { 0, NULL } };
  27. int
  28. idlistlookup(char *name, struct idlist *il)
  29. {
  30. for (; il->name != NULL; il++) {
  31. if (strcmp(name, il->name) == 0)
  32. return il->val;
  33. }
  34. return -1;
  35. }
  36. int
  37. getsatypebyname(char *name)
  38. {
  39. return idlistlookup(name, satype);
  40. }
  41. int
  42. getsaalgbyname(int type, char *name)
  43. {
  44. switch (type) {
  45. case SADB_SATYPE_AH:
  46. return idlistlookup(name, ahalg);
  47. case SADB_SATYPE_ESP:
  48. return idlistlookup(name, espalg);
  49. default:
  50. return -1;
  51. }
  52. }