Skip to content

Commit

Permalink
add type specs
Browse files Browse the repository at this point in the history
  • Loading branch information
Andreas Schultz committed Aug 4, 2011
1 parent e9794d6 commit 8911e58
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 11 deletions.
43 changes: 33 additions & 10 deletions include/netlink.hrl
Expand Up @@ -22,18 +22,41 @@
-define(NETLINK_SCSITRANSPORT, 18). -define(NETLINK_SCSITRANSPORT, 18).
-define(NETLINK_ECRYPTFS, 19). -define(NETLINK_ECRYPTFS, 19).


-type flags() :: list(atom()).
-type family() :: atom().
-type protocol() :: atom().
-type arphdr() :: atom().
-type ifindex() :: non_neg_integer().
-type resid() :: non_neg_integer().
-type nla() :: list({atom(),term()}).
-type ctnetlink_msg() :: {family(),non_neg_integer(),non_neg_integer(),list()}.
-type rtnetlink_neigh() :: {family(),ifindex(),non_neg_integer(),flags(),non_neg_integer(),nla()}.
-type rtnetlink_route() :: {family(),non_neg_integer(),non_neg_integer(),non_neg_integer(),non_neg_integer(),protocol(),non_neg_integer(),non_neg_integer(),flags(),nla()}.
-type rtnetlink_addr() :: {family(),non_neg_integer(),flags(),non_neg_integer(),non_neg_integer(),nla()}.
-type rtnetlink_link() :: {family(),arphdr(),non_neg_integer(),flags(),flags(),nla()}.
-type rtnetlink_prefix() :: {family(),ifindex(),non_neg_integer(),non_neg_integer(),flags(),nla()}.
-type rtnetlink_msg() :: rtnetlink_neigh() | rtnetlink_route() | rtnetlink_addr() | rtnetlink_link() | rtnetlink_prefix().

-record(rtnetlink, {
type ::atom(),
flags ::list(atom()),
seq ::non_neg_integer(),
pid ::non_neg_integer(),
msg ::rtnetlink_msg()
}).

-record(ctnetlink, { -record(ctnetlink, {
type, type ::'new'|'get'|'delete'|'get_ctrzero',
flags, flags ::flags(),
seq, seq ::non_neg_integer(),
pid, pid ::non_neg_integer(),
msg msg ::ctnetlink_msg()
}). }).


-record(ctnetlink_exp, { -record(ctnetlink_exp, {
type, type ::'new'|'get'|'delete'|'get_ctrzero',
flags, flags ::flags(),
seq, seq ::non_neg_integer(),
pid, pid ::non_neg_integer(),
msg msg ::ctnetlink_msg()
}). }).
6 changes: 5 additions & 1 deletion src/netlink.erl
Expand Up @@ -659,6 +659,8 @@ ipctnl_msg(SubSys, Type) ->
sockaddr_nl(Family, Pid, Groups) -> sockaddr_nl(Family, Pid, Groups) ->
sockaddr_nl({Family, Pid, Groups}). sockaddr_nl({Family, Pid, Groups}).


-spec sockaddr_nl({atom()|integer(),integer(),integer()}) -> binary();
(binary()) -> {atom()|integer(),integer(),integer()}.
sockaddr_nl({Family, Pid, Groups}) when is_atom(Family) -> sockaddr_nl({Family, Pid, Groups}) when is_atom(Family) ->
sockaddr_nl({gen_socket:family(Family), Pid, Groups}); sockaddr_nl({gen_socket:family(Family), Pid, Groups});
sockaddr_nl({Family, Pid, Groups}) -> sockaddr_nl({Family, Pid, Groups}) ->
Expand Down Expand Up @@ -988,6 +990,7 @@ nlmsg_ok(DataLen, MsgLen) ->
nl_ct_dec_udp(<< _IpHdr:5/bytes, Data/binary >>) -> nl_ct_dec_udp(<< _IpHdr:5/bytes, Data/binary >>) ->
nl_ct_dec(Data). nl_ct_dec(Data).


-spec nl_ct_dec(binary()) -> [{'error',_} | #ctnetlink{} | #ctnetlink_exp{}].
nl_ct_dec(Msg) -> nl_ct_dec(Msg) ->
nl_ct_dec(Msg, []). nl_ct_dec(Msg, []).


Expand Down Expand Up @@ -1015,6 +1018,7 @@ nl_ct_dec(<< >>, Acc) ->
nl_rt_dec_udp(<< _IpHdr:5/bytes, Data/binary >>) -> nl_rt_dec_udp(<< _IpHdr:5/bytes, Data/binary >>) ->
nl_rt_dec(Data). nl_rt_dec(Data).


-spec nl_rt_dec(binary()) -> [{'error',_} | #rtnetlink{}].
nl_rt_dec(Msg) -> nl_rt_dec(Msg) ->
nl_rt_dec(Msg, []). nl_rt_dec(Msg, []).


Expand Down Expand Up @@ -1096,7 +1100,7 @@ nl_ct_enc({SubSys, MsgType, Flags, Seq, Pid, PayLoad})
when is_atom(SubSys), is_integer(MsgType) -> when is_atom(SubSys), is_integer(MsgType) ->
Data = nl_enc_payload({SubSys}, MsgType, PayLoad), Data = nl_enc_payload({SubSys}, MsgType, PayLoad),
Type = (nfnl_subsys(SubSys) bsl 8) bor MsgType, Type = (nfnl_subsys(SubSys) bsl 8) bor MsgType,
Flags0 = case MsgType of Flags0 = case ipctnl_msg(SubSys, MsgType) of
new -> enc_flags(nlm_new_flags, Flags); new -> enc_flags(nlm_new_flags, Flags);
_ -> enc_flags(nlm_get_flags, Flags) _ -> enc_flags(nlm_get_flags, Flags)
end, end,
Expand Down

0 comments on commit 8911e58

Please sign in to comment.