Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 654992 | Differences between
and this patch

Collapse All | Expand All

(-)a/libmailutils/cidr/fromsa.c (-25 / +20 lines)
Lines 29-83 Link Here
29
#include <mailutils/cidr.h>
29
#include <mailutils/cidr.h>
30
#include <mailutils/errno.h>
30
#include <mailutils/errno.h>
31
static void
32
uint32_to_bytes (unsigned char *bytes, uint32_t u)
33
{
34
  int i;
35
36
  for (i = 0; i < 4; i++)
37
    {
38
      bytes[i] = u & 0xff;
39
      u >>= 8;
40
    }
41
}
42
43
int
31
int
44
_mu_inaddr_to_bytes (int af, void *buf, unsigned char *bytes)
32
_mu_inaddr_to_bytes (int af, void *buf, unsigned char *bytes)
45
{
33
{
46
  uint32_t u;
34
  size_t len;
47
  switch (af)
35
  switch (af)
48
    {
36
    {
49
    case AF_INET:
37
    case AF_INET:
50
      memcpy (&u, buf, sizeof u);
38
      len = 4;
51
      uint32_to_bytes (bytes, u);
39
      break;
52
      return 4;
40
53
54
#ifdef MAILUTILS_IPV6
41
#ifdef MAILUTILS_IPV6
55
    case AF_INET6:
42
    case AF_INET6:
56
      memcpy (bytes, buf, 16);
43
      len = 16;
57
      return 16;
44
      break;
58
#endif
45
#endif
46
47
    default:
48
      len = 0;
59
    }
49
    }
60
  return 0;
50
  memcpy (bytes, buf, len);
51
  return len;
61
}
52
}
62
int
53
int
63
_mu_sockaddr_to_bytes (unsigned char *bytes, struct sockaddr const *sa)
54
_mu_sockaddr_to_bytes (unsigned char *bytes, struct sockaddr const *sa)
64
{
55
{
56
  void *buf;
65
  switch (sa->sa_family)
57
  switch (sa->sa_family)
66
    {
58
    {
67
    case AF_INET:
59
    case AF_INET:
68
      uint32_to_bytes (bytes, ((struct sockaddr_in*)sa)->sin_addr.s_addr);
60
      buf = &(((struct sockaddr_in*)sa)->sin_addr.s_addr);
69
      return 4;
61
      break;
70
#ifdef MAILUTILS_IPV6
62
#ifdef MAILUTILS_IPV6
71
    case AF_INET6:
63
    case AF_INET6:
72
      memcpy (bytes, &((struct sockaddr_in6*)sa)->sin6_addr, 16);
64
      buf = &(((struct sockaddr_in6*)sa)->sin6_addr);
73
      return 16;
65
      break;
74
#endif
66
#endif
67
68
    default:
69
      return 0;
75
    }
70
    }
76
  return 0;
71
  return _mu_inaddr_to_bytes (sa->sa_family, buf, bytes);
77
}
72
}
78
int
73
int
(-)a/libmailutils/cidr/tosa.c (-7 / +2 lines)
Lines 43-60 mu_cidr_to_sockaddr (struct mu_cidr *cidr, struct sockaddr **psa) Link Here
43
  struct sockaddr *sa;
43
  struct sockaddr *sa;
44
  int socklen;
44
  int socklen;
45
  int i;
45
  int i;
46
46
47
  memset (&addr, 0, sizeof (addr));
47
  memset (&addr, 0, sizeof (addr));
48
  addr.sa.sa_family = cidr->family;
48
  addr.sa.sa_family = cidr->family;
49
  switch (cidr->family)
49
  switch (cidr->family)
50
    {
50
    {
51
    case AF_INET:
51
    case AF_INET:
52
      socklen = sizeof (addr.s_in);
52
      socklen = sizeof (addr.s_in);
53
      for (i = 0; i < cidr->len; i++)
53
      memcpy (&addr.s_in.sin_addr.s_addr, cidr->address, 4);
54
	{
55
	  addr.s_in.sin_addr.s_addr <<= 8;
56
	  addr.s_in.sin_addr.s_addr |= cidr->address[i];
57
	}
58
      break;
54
      break;
59
#ifdef MAILUTILS_IPV6
55
#ifdef MAILUTILS_IPV6
60
-

Return to bug 654992