```{index} single: pack_sockaddr_in6; Socket function ``` ```{index} single: Socket::pack_sockaddr_in6; Perl function ``` # pack_sockaddr_in6 Build a packed `sockaddr_in6` from a port, a 16-byte IPv6 address, and optional scope and flow-info fields. ## Synopsis ```perl my $sin6 = pack_sockaddr_in6($port, $packed_ipv6); my $sin6 = pack_sockaddr_in6($port, $packed_ipv6, $scope_id, $flowinfo); ``` ## What you get back A fixed-size byte string matching the platform's `struct sockaddr_in6`, ready for `bind` or `connect`. ## Examples ```perl my $addr = inet_pton(AF_INET6, "::1"); my $sin6 = pack_sockaddr_in6(443, $addr); connect($sock, $sin6) or die $!; ``` ```perl ## Link-local address with scope index for eth0. my $scope = scalar getsockopt(...); # or from if_nametoindex my $sin6 = pack_sockaddr_in6(5353, inet_pton(AF_INET6, "fe80::1"), $scope); ``` ## Edge cases - `$scope_id` and `$flowinfo` default to 0 when omitted. - An address argument shorter than 16 bytes leaves the address field zeroed (i.e. `::`). - Port and flow-info are truncated to 16 and 32 bits respectively. ## Differences from upstream Fully compatible with upstream Socket. ## See also - `unpack_sockaddr_in6` — reverse direction. - `sockaddr_in6` — dual-mode shortcut that dispatches on arg count. - `pack_sockaddr_in` — IPv4 counterpart. - `inet_pton` — usual source of the address argument.