diff options
author | Snaipe <franklinmathieu@gmail.com> | 2016-10-25 00:56:37 +0200 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2016-10-25 19:18:35 +0000 |
commit | d8db5646efc17dec73426e3745a9c9ef704a91c7 (patch) | |
tree | 005af28a93d9a82fc9a2381e9d256bdf8a77c4cf /epan/wslua/wslua_tvb.c | |
parent | 60a926dc32dfc5333961752e902c19d83b98d2ca (diff) | |
download | wireshark-d8db5646efc17dec73426e3745a9c9ef704a91c7.tar.gz |
lua: Added support for FT_IPv6 fields
* Implement Tvb:ipv6()
* Handle FT_IPv6 protofields during insertion in the lua tree
* Implement Address.ipv6(hostname)
Change-Id: I585c392681b3aef02ed8ee956f74051d77fb28d4
Signed-off-by: Franklin "Snaipe" Mathieu <snaipe@diacritic.io>
Reviewed-on: https://code.wireshark.org/review/18442
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/wslua/wslua_tvb.c')
-rw-r--r-- | epan/wslua/wslua_tvb.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/epan/wslua/wslua_tvb.c b/epan/wslua/wslua_tvb.c index e10ff394d8..5d12df941e 100644 --- a/epan/wslua/wslua_tvb.c +++ b/epan/wslua/wslua_tvb.c @@ -794,6 +794,29 @@ WSLUA_METHOD TvbRange_le_ipv4(lua_State* L) { WSLUA_RETURN(1); /* The IPv4 `Address` object. */ } +WSLUA_METHOD TvbRange_ipv6(lua_State* L) { + /* Get an IPv6 Address from a `TvbRange`, as an `Address` object. */ + TvbRange tvbr = checkTvbRange(L,1); + Address addr; + + if ( !(tvbr && tvbr->tvb)) return 0; + if (tvbr->tvb->expired) { + luaL_error(L,"expired tvb"); + return 0; + } + + if (tvbr->len != 16) { + WSLUA_ERROR(TvbRange_ipv6,"The range must be 16 octets long"); + return 0; + } + + addr = g_new(address,1); + alloc_address_tvb(NULL,addr,AT_IPv6,16,tvbr->tvb->ws_tvb,tvbr->offset); + pushAddress(L,addr); + + WSLUA_RETURN(1); /* The IPv6 `Address` object. */ +} + WSLUA_METHOD TvbRange_ether(lua_State* L) { /* Get an Ethernet Address from a `TvbRange`, as an `Address` object. */ TvbRange tvbr = checkTvbRange(L,1); @@ -1372,6 +1395,7 @@ WSLUA_METHODS TvbRange_methods[] = { WSLUA_CLASS_FNREG(TvbRange,ether), WSLUA_CLASS_FNREG(TvbRange,ipv4), WSLUA_CLASS_FNREG(TvbRange,le_ipv4), + WSLUA_CLASS_FNREG(TvbRange,ipv6), WSLUA_CLASS_FNREG(TvbRange,nstime), WSLUA_CLASS_FNREG(TvbRange,le_nstime), WSLUA_CLASS_FNREG(TvbRange,string), |