%%% Copyright (c) 2015, Michael Santos %%% Permission to use, copy, modify, and/or distribute this software for any %%% purpose with or without fee is hereby granted, provided that the above %%% copyright notice and this permission notice appear in all copies. %%% %%% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES %%% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF %%% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR %%% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES %%% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN %%% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF %%% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -module(alcove_cstruct). -include("alcove.hrl"). -export([ jail/1 ]). -spec jail(#alcove_jail{}) -> [binary()|{ptr, binary()}]. jail(#alcove_jail{ version = 2, path = Path, hostname = Hostname, jailname = Jailname, ip4 = IPv4, ip6 = IPv6 }) -> [<<2:4/native-unsigned-integer-unit:8>>, <<0:(alcove:wordalign(4) * 8)>>, {ptr, <<(iolist_to_binary(Path))/binary, 0>>}, {ptr, <<(iolist_to_binary(Hostname))/binary, 0>>}, {ptr, <<(iolist_to_binary(Jailname))/binary, 0>>}, <<(length(IPv4)):4/native-unsigned-integer-unit:8, (length(IPv6)):4/native-unsigned-integer-unit:8>>, {ptr, << <> || {IP1,IP2,IP3,IP4} <- IPv4 >>}, {ptr, << <> || {IP1,IP2,IP3,IP4,IP5,IP6,IP7,IP8} <- IPv6 >>}].