corex_var.c 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /**
  2. * $Id$
  3. *
  4. * Copyright (C) 2013 Daniel-Constantin Mierla (asipto.com)
  5. *
  6. * This file is part of Kamailio, a free SIP server.
  7. *
  8. * Permission to use, copy, modify, and distribute this software for any
  9. * purpose with or without fee is hereby granted, provided that the above
  10. * copyright notice and this permission notice appear in all copies.
  11. *
  12. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  13. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  14. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  15. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  16. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  17. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  18. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  19. *
  20. */
  21. #include <stdio.h>
  22. #include <unistd.h>
  23. #include <stdlib.h>
  24. #include <string.h>
  25. #include "../../dprint.h"
  26. #include "../../action.h"
  27. #include "corex_var.h"
  28. /**
  29. *
  30. */
  31. int pv_parse_cfg_name(pv_spec_p sp, str *in)
  32. {
  33. if(sp==NULL || in==NULL || in->len<=0)
  34. return -1;
  35. switch(in->len)
  36. {
  37. case 4:
  38. if(strncmp(in->s, "line", 4)==0)
  39. sp->pvp.pvn.u.isname.name.n = 0;
  40. else if(strncmp(in->s, "name", 4)==0)
  41. sp->pvp.pvn.u.isname.name.n = 1;
  42. else goto error;
  43. break;
  44. default:
  45. goto error;
  46. }
  47. sp->pvp.pvn.type = PV_NAME_INTSTR;
  48. sp->pvp.pvn.u.isname.type = 0;
  49. return 0;
  50. error:
  51. LM_ERR("unknown PV af key: %.*s\n", in->len, in->s);
  52. return -1;
  53. }
  54. /**
  55. *
  56. */
  57. int pv_get_cfg(sip_msg_t *msg, pv_param_t *param, pv_value_t *res)
  58. {
  59. char *n;
  60. if(param==NULL)
  61. return -1;
  62. switch(param->pvn.u.isname.name.n)
  63. {
  64. case 1:
  65. n = get_cfg_crt_name();
  66. if(n==0)
  67. return pv_get_null(msg, param, res);
  68. return pv_get_strzval(msg, param, res, n);
  69. default:
  70. return pv_get_sintval(msg, param, res, get_cfg_crt_line());
  71. }
  72. }