# Why NGX\_SOCKADDRLEN is 512?

**URL:** <https://www.ruby-forum.com/t/why-ngx-sockaddrlen-is-512/203879>\
**Category:** NGINX\
**Created:** [March 1, 2011, 8:30am UTC](https://www.ruby-forum.com/t/why-ngx-sockaddrlen-is-512/203879 "2011-03-01T08:30:45Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![luislavena](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/0ea827/32.png) [@luislavena](https://www.ruby-forum.com/u/luislavena)\
**Post date:** [March 1, 2011, 8:30am UTC](https://www.ruby-forum.com/t/why-ngx-sockaddrlen-is-512/203879/1 "2011-03-01T08:30:45Z")

</div>

For an IPv6, sizeof (struct sockaddr\_in6) is only 28bytes, so why set  
NGX\_SOCKADDRLEN 512?

Posted at Nginx Forum:

> **[Why NGX\_SOCKADDRLEN is 512?](https://forum.nginx.org/read.php?2,179363,179363#msg-179363)**
>
> For an IPv6, sizeof (struct sockaddr\_in6) is only 28bytes, so why set NGX\_SOCKADDRLEN 512?

---

<div class="post-metadata">

**Author:** ![speedfirst](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e19adc/32.png) [@speedfirst](https://www.ruby-forum.com/u/speedfirst)\
**Post date:** [March 1, 2011, 8:59am UTC](https://www.ruby-forum.com/t/why-ngx-sockaddrlen-is-512/203879/2 "2011-03-01T08:59:36Z")

</div>

On Mar 1, 2011, at 10:28 , speedfirst wrote:

> For an IPv6, sizeof (struct sockaddr\_in6) is only 28bytes, so why set  
> NGX\_SOCKADDRLEN 512?

src/core/ngx\_inet.h

/\*

- TODO: autoconfigure NGX\_SOCKADDRLEN and NGX\_SOCKADDR\_STRLEN as
- 

```
  sizeof(struct sockaddr_storage)

```

- 

```
  sizeof(struct sockaddr_un)

```

- 

```
  sizeof(struct sockaddr_in6)

```

- 

```
  sizeof(struct sockaddr_in)

```

\*/

[…]

#if (NGX\_HAVE\_UNIX\_DOMAIN)  
#define NGX\_SOCKADDRLEN sizeof(struct sockaddr\_un)  
#else  
#define NGX\_SOCKADDRLEN 512  
#endif

struct sockaddr\_un size is about 110 bytes depending on platform.

–  
Igor S.

> **[Igor Sysoev](http://sysoev.ru/en/)**

---

<div class="post-metadata">

**Author:** ![speedfirst](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e19adc/32.png) [@speedfirst](https://www.ruby-forum.com/u/speedfirst)\
**Post date:** [March 1, 2011, 10:04am UTC](https://www.ruby-forum.com/t/why-ngx-sockaddrlen-is-512/203879/3 "2011-03-01T10:04:14Z")

</div>

On Mar 1, 2011, at 11:59 , speedfirst wrote:

> I think this way would be better:
> 
> #if (NGX\_HAVE\_UNIX\_DOMAIN)  
> #define NGX\_SOCKADDRLEN sizeof(struct sockaddr\_un)  
> #else  
> #define NGX\_SOCKADDRLEN sizeof(struct sockaddr\_storage)  
> #endif
> 
> sizeof(sturct sockaddr\_storage) is 128 in my Linux 64bit, 512 is too  
> big.

The problem that struct sockaddr\_storage is relatively recent thing.

–  
Igor S.

> **[Igor Sysoev](http://sysoev.ru/en/)**

---

<div class="post-metadata">

**Author:** ![speedfirst](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e19adc/32.png) [@speedfirst](https://www.ruby-forum.com/u/speedfirst)\
**Post date:** [March 1, 2011, 9:59am UTC](https://www.ruby-forum.com/t/why-ngx-sockaddrlen-is-512/203879/4 "2011-03-01T09:59:49Z")

</div>

I think this way would be better:

#if (NGX\_HAVE\_UNIX\_DOMAIN)  
#define NGX\_SOCKADDRLEN sizeof(struct sockaddr\_un)  
#else  
#define NGX\_SOCKADDRLEN sizeof(struct sockaddr\_storage)  
#endif

sizeof(sturct sockaddr\_storage) is 128 in my Linux 64bit, 512 is too  
big.

anyway, this is not critical.

Posted at Nginx Forum:

> **[Re: Why NGX\_SOCKADDRLEN is 512?](https://forum.nginx.org/read.php?2,179363,179379#msg-179379)**
>
> For an IPv6, sizeof (struct sockaddr\_in6) is only 28bytes, so why set NGX\_SOCKADDRLEN 512?
