wap_addr.c
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:2k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * wap_addr.c - implement WAPAddr and WAPAddrTuple types.
  3.  */
  4. #include <stdlib.h>
  5. #include "gwlib/gwlib.h"
  6. #include "wap_addr.h"
  7. WAPAddr *wap_addr_create(Octstr *address, long port) 
  8. {
  9.     WAPAddr *addr;
  10.     
  11.     addr = gw_malloc(sizeof(*addr));
  12.     addr->address = octstr_duplicate(address);
  13.     addr->port = port;
  14.     return addr;
  15. }
  16. void wap_addr_destroy(WAPAddr *addr) 
  17. {
  18.     if (addr != NULL) {
  19. octstr_destroy(addr->address);
  20. gw_free(addr);
  21.     }
  22. }
  23. int wap_addr_same(WAPAddr *a, WAPAddr *b) 
  24. {
  25.     return a->port == b->port && octstr_compare(a->address, b->address) == 0;
  26. }
  27. WAPAddrTuple *wap_addr_tuple_create(Octstr *rmt_addr, long rmt_port,
  28.                         Octstr *lcl_addr, long lcl_port) 
  29. {
  30.     WAPAddrTuple *tuple;
  31.     
  32.     tuple = gw_malloc(sizeof(*tuple));
  33.     tuple->remote = wap_addr_create(rmt_addr, rmt_port);
  34.     tuple->local = wap_addr_create(lcl_addr, lcl_port);
  35.     return tuple;
  36. }
  37. void wap_addr_tuple_destroy(WAPAddrTuple *tuple) 
  38. {
  39.     if (tuple != NULL) {
  40. wap_addr_destroy(tuple->remote);
  41. wap_addr_destroy(tuple->local);
  42. gw_free(tuple);
  43.     }
  44. }
  45. int wap_addr_tuple_same(WAPAddrTuple *a, WAPAddrTuple *b) 
  46. {
  47.     return wap_addr_same(a->remote, b->remote) &&
  48.         wap_addr_same(a->local, b->local);
  49. }
  50. WAPAddrTuple *wap_addr_tuple_duplicate(WAPAddrTuple *tuple) 
  51. {
  52.     if (tuple == NULL)
  53. return NULL;
  54.     
  55.     return wap_addr_tuple_create(tuple->remote->address,
  56.                      tuple->remote->port,
  57.  tuple->local->address,
  58.  tuple->local->port);
  59. }
  60. void wap_addr_tuple_dump(WAPAddrTuple *tuple) 
  61. {
  62.     debug("wap", 0, "WAPAddrTuple %p = <%s:%ld> - <%s:%ld>", 
  63.   (void *) tuple,
  64.   octstr_get_cstr(tuple->remote->address),
  65.   tuple->remote->port,
  66.   octstr_get_cstr(tuple->local->address),
  67.   tuple->local->port);
  68. }