summaryrefslogtreecommitdiff
path: root/epan/wslua/wslua_tvb.c
diff options
context:
space:
mode:
authorSnaipe <franklinmathieu@gmail.com>2016-10-25 00:56:37 +0200
committerMichael Mann <mmann78@netscape.net>2016-10-25 19:18:35 +0000
commitd8db5646efc17dec73426e3745a9c9ef704a91c7 (patch)
tree005af28a93d9a82fc9a2381e9d256bdf8a77c4cf /epan/wslua/wslua_tvb.c
parent60a926dc32dfc5333961752e902c19d83b98d2ca (diff)
downloadwireshark-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.c24
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),