forked from osmocom/wireshark
new H.282 (RDC) and H.283 (LCT) dissectors
svn path=/trunk/; revision=23339
This commit is contained in:
parent
475ec209ce
commit
686ea4b773
|
@ -43,6 +43,8 @@ SUBDIRS = \
|
|||
h235 \
|
||||
h245 \
|
||||
h248 \
|
||||
h282 \
|
||||
h283 \
|
||||
h323 \
|
||||
h450 \
|
||||
h450-ros \
|
||||
|
|
|
@ -83,6 +83,8 @@ per: \
|
|||
h225 \
|
||||
h235 \
|
||||
h245 \
|
||||
h282 \
|
||||
h283 \
|
||||
h323 \
|
||||
h450 \
|
||||
h450-ros \
|
||||
|
@ -157,6 +159,12 @@ clean:
|
|||
cd h248
|
||||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
|
||||
cd ..
|
||||
cd h282
|
||||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
|
||||
cd ..
|
||||
cd h283
|
||||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
|
||||
cd ..
|
||||
cd h323
|
||||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake clean
|
||||
cd ..
|
||||
|
@ -411,6 +419,16 @@ h248::
|
|||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
|
||||
cd ..
|
||||
|
||||
h282::
|
||||
cd h282
|
||||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
|
||||
cd ..
|
||||
|
||||
h283::
|
||||
cd h283
|
||||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
|
||||
cd ..
|
||||
|
||||
h323::
|
||||
cd h323
|
||||
$(MAKE) /$(MAKEFLAGS) -f Makefile.nmake copy_files
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
# $Id$
|
||||
#
|
||||
#
|
||||
# Wireshark - Network traffic analyzer
|
||||
# By Gerald Combs <gerald@wireshark.org>
|
||||
# Copyright 1998 Gerald Combs
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
|
||||
include ../Makefile.preinc
|
||||
include Makefile.common
|
||||
include ../Makefile.inc
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# $Id$
|
||||
#
|
||||
#
|
||||
# Wireshark - Network traffic analyzer
|
||||
# By Gerald Combs <gerald@wireshark.org>
|
||||
# Copyright 1998 Gerald Combs
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
|
||||
PROTOCOL_NAME = h282
|
||||
|
||||
DISSECTOR_FILES = \
|
||||
packet-$(PROTOCOL_NAME).c
|
||||
|
||||
# NEED_PACKET_PROTO_H =
|
||||
|
||||
EXT_ASN_FILE_LIST =
|
||||
|
||||
ASN_FILE_LIST = \
|
||||
RDC-PROTOCOL.asn
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(ASN_FILE_LIST) \
|
||||
packet-$(PROTOCOL_NAME)-template.c \
|
||||
$(PROTOCOL_NAME).cnf
|
||||
|
||||
SRC_FILES = \
|
||||
$(EXTRA_DIST) \
|
||||
$(EXT_ASN_FILE_LIST)
|
||||
|
||||
A2W_FLAGS =
|
||||
|
||||
EXTRA_CNF =
|
|
@ -0,0 +1,29 @@
|
|||
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
#
|
||||
# Wireshark - Network traffic analyzer
|
||||
# By Gerald Combs <gerald@wireshark.org>
|
||||
# Copyright 1998 Gerald Combs
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
|
||||
include ../../config.nmake
|
||||
include ../Makefile.preinc.nmake
|
||||
include Makefile.common
|
||||
include ../Makefile.inc.nmake
|
||||
|
|
@ -0,0 +1,981 @@
|
|||
-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h282/1999/RDC-PROTOCOL.asn
|
||||
|
||||
-- Module RDC-PROTOCOL (H.282:02/1998)
|
||||
RDC-PROTOCOL {itu-t(0) recommendation(0) h 282 version(0) 1} DEFINITIONS
|
||||
AUTOMATIC TAGS ::=
|
||||
BEGIN
|
||||
|
||||
-- Export all symbols
|
||||
-- ==========================================================================
|
||||
-- Part 1: Message Components
|
||||
-- ==========================================================================
|
||||
H221NonStandardIdentifier ::= OCTET STRING(SIZE (4..255))
|
||||
|
||||
-- First four octets shall be country code and
|
||||
-- Manufacturer code, assigned as specified in
|
||||
-- H.221 Annex A for NS-cap and NS-comm
|
||||
Key ::= CHOICE -- Identifier of a standard or non-standard object
|
||||
{
|
||||
object OBJECT IDENTIFIER,
|
||||
h221NonStandard H221NonStandardIdentifier
|
||||
}
|
||||
|
||||
NonStandardParameter ::= SEQUENCE {key Key,
|
||||
data OCTET STRING
|
||||
}
|
||||
|
||||
Handle ::= INTEGER(0..4294967295)
|
||||
|
||||
NonStandardIdentifier ::= CHOICE {
|
||||
object OBJECT IDENTIFIER,
|
||||
h221nonStandard H221NonStandardIdentifier
|
||||
}
|
||||
|
||||
TextString ::=
|
||||
BMPString
|
||||
(SIZE (0..255)) -- Basic Multilingual Plane of ISO/IEC 10646-1 (Unicode)
|
||||
|
||||
|
||||
DeviceClass ::= CHOICE {
|
||||
camera NULL,
|
||||
microphone NULL,
|
||||
streamPlayerRecorder NULL,
|
||||
slideProjector NULL,
|
||||
lightSource NULL,
|
||||
sourceCombiner NULL,
|
||||
nonStandardDevice NonStandardIdentifier
|
||||
}
|
||||
|
||||
DeviceID ::= INTEGER(0..127)
|
||||
|
||||
StreamID ::= INTEGER(0..65535)
|
||||
|
||||
DeviceProfile ::= SEQUENCE {
|
||||
deviceID DeviceID,
|
||||
audioSourceFlag BOOLEAN,
|
||||
audioSinkFlag BOOLEAN,
|
||||
videoSourceFlag BOOLEAN,
|
||||
videoSinkFlag BOOLEAN,
|
||||
remoteControlFlag BOOLEAN,
|
||||
instanceNumber INTEGER(0..255),
|
||||
deviceName TextString OPTIONAL,
|
||||
...
|
||||
}
|
||||
|
||||
StreamProfile ::= SEQUENCE {
|
||||
streamID StreamID,
|
||||
videoStreamFlag BOOLEAN,
|
||||
sourceChangeFlag BOOLEAN,
|
||||
streamName TextString OPTIONAL,
|
||||
...
|
||||
}
|
||||
|
||||
CapabilityID ::= CHOICE {
|
||||
standard INTEGER(0..65535), -- Assigned by this specification
|
||||
nonStandard Key
|
||||
}
|
||||
|
||||
NonCollapsingCapabilities ::=
|
||||
SET OF
|
||||
SEQUENCE {capabilityID CapabilityID,
|
||||
applicationData
|
||||
CHOICE {deviceList SET SIZE (0..127) OF DeviceProfile,
|
||||
streamList SET SIZE (0..127) OF StreamProfile
|
||||
}}
|
||||
|
||||
--
|
||||
-- Attribute parameter types
|
||||
--
|
||||
Day ::= INTEGER(1..31)
|
||||
|
||||
Month ::= INTEGER(1..12)
|
||||
|
||||
Year ::= INTEGER(1980..2999)
|
||||
|
||||
Hour ::= INTEGER(0..23)
|
||||
|
||||
Minute ::= INTEGER(0..59)
|
||||
|
||||
DeviceText ::= OCTET STRING(SIZE (0..32))
|
||||
|
||||
PanPosition ::= INTEGER(-18000..18000) -- 100ths of a degree
|
||||
|
||||
|
||||
TiltPosition ::= INTEGER(-18000..18000) -- 100ths of a degree
|
||||
|
||||
|
||||
ZoomPosition ::= INTEGER(-1023..1023)
|
||||
|
||||
IrisPosition ::= INTEGER(-127..127)
|
||||
|
||||
FocusPosition ::= INTEGER(-127..127)
|
||||
|
||||
CameraPanSpeed ::= INTEGER(1..18000) -- 100ths of a degree/sec
|
||||
|
||||
|
||||
CameraTiltSpeed ::= INTEGER(1..18000) -- 100ths of a degree/sec
|
||||
|
||||
|
||||
BackLight ::= INTEGER(0..255)
|
||||
|
||||
WhiteBalance ::= INTEGER(0..255)
|
||||
|
||||
PresetNumber ::= INTEGER(1..255)
|
||||
|
||||
StreamPlayerState ::= CHOICE {
|
||||
playing NULL,
|
||||
recording NULL,
|
||||
pausedOnRecord NULL,
|
||||
pausedOnPlay NULL,
|
||||
rewinding NULL,
|
||||
fastForwarding NULL,
|
||||
searchingForwards NULL,
|
||||
searchingBackwards NULL,
|
||||
stopped NULL,
|
||||
programUnavailable NULL
|
||||
}
|
||||
|
||||
DevicePresetCapability ::= SEQUENCE {
|
||||
maxNumber PresetNumber,
|
||||
presetCapability
|
||||
SET SIZE (0..255) OF
|
||||
SEQUENCE {presetNumber PresetNumber,
|
||||
storeModeSupported BOOLEAN,
|
||||
presetTextLabel DeviceText} OPTIONAL
|
||||
}
|
||||
|
||||
CameraFilterCapability ::= SEQUENCE {
|
||||
maxNumberOfFilters INTEGER(2..255),
|
||||
filterTextLabel
|
||||
SET SIZE (0..255) OF
|
||||
SEQUENCE {filterNumber INTEGER(1..255),
|
||||
filterTextLabel DeviceText} OPTIONAL
|
||||
}
|
||||
|
||||
CameraLensCapability ::= SEQUENCE {
|
||||
maxNumberOfLens INTEGER(2..255),
|
||||
accessoryTextLabel
|
||||
SET SIZE (0..255) OF
|
||||
SEQUENCE {lensNumber INTEGER(1..255),
|
||||
lensTextLabel DeviceText} OPTIONAL
|
||||
}
|
||||
|
||||
ExternalCameraLightCapability ::= SEQUENCE {
|
||||
maxNumber INTEGER(1..10),
|
||||
lightTextLabel
|
||||
SET SIZE (0..10) OF
|
||||
SEQUENCE {lightNumber INTEGER(1..10),
|
||||
lightLabel DeviceText} OPTIONAL
|
||||
}
|
||||
|
||||
CameraPanSpeedCapability ::= SEQUENCE {
|
||||
maxSpeed CameraPanSpeed,
|
||||
minSpeed CameraPanSpeed,
|
||||
speedStepSize CameraPanSpeed
|
||||
}
|
||||
|
||||
CameraTiltSpeedCapability ::= SEQUENCE {
|
||||
maxSpeed CameraTiltSpeed,
|
||||
minSpeed CameraTiltSpeed,
|
||||
speedStepSize CameraTiltSpeed
|
||||
}
|
||||
|
||||
MaxBacklight ::= INTEGER(1..255)
|
||||
|
||||
MaxWhiteBalance ::= INTEGER(1..255)
|
||||
|
||||
MinZoomPositionSetSize ::= INTEGER(1..1023)
|
||||
|
||||
MinFocusPositionStepSize ::= INTEGER(1..127)
|
||||
|
||||
MinIrisPositionStepSize ::= INTEGER(1..127)
|
||||
|
||||
PanPositionCapability ::= SEQUENCE {
|
||||
maxLeft INTEGER(-18000..0), -- Max pan left
|
||||
maxRight INTEGER(0..18000), -- Max pan right
|
||||
minStepSize INTEGER(1..18000)
|
||||
}
|
||||
|
||||
TiltPositionCapability ::= SEQUENCE {
|
||||
maxDown INTEGER(-18000..0), -- Max tilt down
|
||||
maxUp INTEGER(0..18000), -- Max tilt up
|
||||
minStepSize INTEGER(1..18000)
|
||||
}
|
||||
|
||||
MinZoomMagnificationStepSize ::= INTEGER(1..1000)
|
||||
|
||||
MaxNumberOfSlides ::= INTEGER(1..1024)
|
||||
|
||||
MaxSlideDisplayTime ::= INTEGER(1..255) -- Max time in seconds
|
||||
|
||||
|
||||
MaxNumberOfPrograms ::= INTEGER(1..1023)
|
||||
|
||||
PlayBackSpeedCapability ::= SEQUENCE {
|
||||
multiplierFactors SET SIZE (1..64) OF INTEGER(10..1000),
|
||||
divisorFactors SET SIZE (1..64) OF INTEGER(10..1000)
|
||||
}
|
||||
|
||||
VideoInputsCapability ::= SEQUENCE {
|
||||
numberOfDeviceInputs INTEGER(2..64),
|
||||
numberOfDeviceRows INTEGER(1..64),
|
||||
-- The Optional Device list is only included if the inputs are configurable
|
||||
availableDevices
|
||||
SET SIZE (2..64) OF
|
||||
SEQUENCE {deviceClass DeviceClass,
|
||||
deviceIdentifier DeviceID} OPTIONAL
|
||||
}
|
||||
|
||||
AudioInputsCapability ::= SEQUENCE {
|
||||
numberOfDeviceInputs INTEGER(2..64),
|
||||
-- The Optional Device list is only included if the inputs are configurable
|
||||
availableDevices
|
||||
SET SIZE (2..64) OF
|
||||
SEQUENCE {deviceClass DeviceClass,
|
||||
deviceIdentifier DeviceID} OPTIONAL
|
||||
}
|
||||
|
||||
DeviceAttribute ::= CHOICE {
|
||||
deviceStateSupported NULL,
|
||||
deviceDateSupported NULL,
|
||||
deviceTimeSupported NULL,
|
||||
devicePresetSupported DevicePresetCapability,
|
||||
irisModeSupported NULL,
|
||||
focusModeSupported NULL,
|
||||
pointingModeSupported NULL,
|
||||
cameraLensSupported CameraLensCapability,
|
||||
cameraFilterSupported CameraFilterCapability,
|
||||
homePositionSupported NULL,
|
||||
externalCameraLightSupported ExternalCameraLightCapability,
|
||||
clearCameraLensSupported NULL,
|
||||
cameraPanSpeedSupported CameraPanSpeedCapability,
|
||||
cameraTiltSpeedSupported CameraTiltSpeedCapability,
|
||||
backLightModeSupported NULL,
|
||||
backLightSettingSupported MaxBacklight,
|
||||
whiteBalanceSettingSupported MaxWhiteBalance,
|
||||
whiteBalanceModeSupported NULL,
|
||||
calibrateWhiteBalanceSupported NULL,
|
||||
focusImageSupported NULL,
|
||||
captureImageSupported NULL,
|
||||
panContinuousSupported NULL,
|
||||
tiltContinuousSupported NULL,
|
||||
zoomContinuousSupported NULL,
|
||||
focusContinuousSupported NULL,
|
||||
irisContinuousSupported NULL,
|
||||
zoomPositionSupported MinZoomPositionSetSize,
|
||||
focusPositionSupported MinFocusPositionStepSize,
|
||||
irisPositionSupported MinIrisPositionStepSize,
|
||||
panPositionSupported PanPositionCapability,
|
||||
tiltPositionSupported TiltPositionCapability,
|
||||
zoomMagnificationSupported MinZoomMagnificationStepSize,
|
||||
panViewSupported NULL,
|
||||
tiltViewSupported NULL,
|
||||
selectSlideSupported MaxNumberOfSlides,
|
||||
selectNextSlideSupported NULL,
|
||||
slideShowModeSupported NULL,
|
||||
playSlideShowSupported NULL,
|
||||
setSlideDisplayTimeSupported MaxSlideDisplayTime,
|
||||
continuousRewindSupported NULL,
|
||||
continuousFastForwardSupported NULL,
|
||||
searchBackwardsSupported NULL,
|
||||
searchForwardsSupported NULL,
|
||||
pauseSupported NULL,
|
||||
selectProgramSupported MaxNumberOfPrograms,
|
||||
nextProgramSupported NULL,
|
||||
gotoNormalPlayTimePointSupported NULL,
|
||||
readStreamPlayerStateSupported NULL,
|
||||
readProgramDurationSupported NULL,
|
||||
continuousPlayBackModeSupported NULL,
|
||||
playbackSpeedSupported PlayBackSpeedCapability,
|
||||
playSupported NULL,
|
||||
setAudioOutputStateSupported NULL,
|
||||
playToNormalPlayTimePointSupported NULL,
|
||||
recordSupported NULL,
|
||||
recordForDurationSupported NULL,
|
||||
configurableVideoInputsSupported VideoInputsCapability,
|
||||
videoInputsSupported VideoInputsCapability,
|
||||
configurableAudioInputsSupported AudioInputsCapability,
|
||||
audioInputsSupported AudioInputsCapability,
|
||||
-- Attributes for Device Events
|
||||
deviceLockStateChangedSupported NULL,
|
||||
deviceAvailabilityChangedSupported NULL,
|
||||
cameraPannedToLimitSupported NULL,
|
||||
cameraTiltedToLimitSupported NULL,
|
||||
cameraZoomedToLimitSupported NULL,
|
||||
cameraFocusedToLimitSupported NULL,
|
||||
autoSlideShowFinishedSupported NULL,
|
||||
streamPlayerStateChangeSupported NULL,
|
||||
streamPlayerProgramChangeSupported NULL,
|
||||
nonStandardAttributeSupported NonStandardParameter,
|
||||
...
|
||||
}
|
||||
|
||||
DeviceState ::= CHOICE {active NULL,
|
||||
inactive NULL
|
||||
}
|
||||
|
||||
DeviceDate ::= SEQUENCE {day Day,
|
||||
month Month,
|
||||
year Year
|
||||
}
|
||||
|
||||
DeviceTime ::= SEQUENCE {hour Hour,
|
||||
minute Minute
|
||||
}
|
||||
|
||||
DevicePreset ::= SEQUENCE {
|
||||
presetNumber PresetNumber,
|
||||
mode CHOICE {store NULL,
|
||||
activate NULL}
|
||||
}
|
||||
|
||||
Mode ::= CHOICE {manual NULL,
|
||||
auto NULL
|
||||
}
|
||||
|
||||
PointingToggle ::= CHOICE {manual NULL,
|
||||
auto NULL,
|
||||
toggle NULL
|
||||
}
|
||||
|
||||
SelectExternalLight ::= CHOICE {lightNumber INTEGER(1..10),
|
||||
none NULL
|
||||
}
|
||||
|
||||
PanContinuous ::= SEQUENCE {
|
||||
panDirection
|
||||
CHOICE {left NULL,
|
||||
right NULL,
|
||||
stop NULL,
|
||||
continue NULL},
|
||||
timeOut INTEGER(50..1000) -- Milliseconds
|
||||
}
|
||||
|
||||
TiltContinuous ::= SEQUENCE {
|
||||
tiltDirection
|
||||
CHOICE {up NULL,
|
||||
down NULL,
|
||||
stop NULL,
|
||||
continue NULL},
|
||||
timeOut INTEGER(50..1000) -- Milliseconds
|
||||
}
|
||||
|
||||
ZoomContinuous ::= SEQUENCE {
|
||||
zoomDirection
|
||||
CHOICE {telescopic NULL,
|
||||
wide NULL,
|
||||
stop NULL,
|
||||
continue NULL},
|
||||
timeOut INTEGER(50..1000) -- Milliseconds
|
||||
}
|
||||
|
||||
FocusContinuous ::= SEQUENCE {
|
||||
focusDirection
|
||||
CHOICE {near NULL,
|
||||
far NULL,
|
||||
stop NULL,
|
||||
continue NULL},
|
||||
timeOut INTEGER(50..1000) -- Milliseconds
|
||||
}
|
||||
|
||||
IrisContinuous ::= SEQUENCE {
|
||||
irisDirection
|
||||
CHOICE {darker NULL,
|
||||
lighter NULL,
|
||||
stop NULL,
|
||||
continue NULL},
|
||||
timeOut INTEGER(50..1000) -- Milliseconds
|
||||
}
|
||||
|
||||
PositioningMode ::= CHOICE {relative NULL,
|
||||
absolute NULL
|
||||
}
|
||||
|
||||
CameraLensNumber ::= INTEGER(1..255)
|
||||
|
||||
CameraFilterNumber ::= INTEGER(1..255)
|
||||
|
||||
SetZoomPosition ::= SEQUENCE {
|
||||
zoomPosition ZoomPosition,
|
||||
positioningMode PositioningMode
|
||||
}
|
||||
|
||||
SetFocusPosition ::= SEQUENCE {
|
||||
focusPosition FocusPosition,
|
||||
positioningMode PositioningMode
|
||||
}
|
||||
|
||||
SetIrisPosition ::= SEQUENCE {
|
||||
irisPosition IrisPosition,
|
||||
positioningMode PositioningMode
|
||||
}
|
||||
|
||||
SetPanPosition ::= SEQUENCE {
|
||||
panPosition PanPosition,
|
||||
positioningMode PositioningMode
|
||||
}
|
||||
|
||||
SetTiltPosition ::= SEQUENCE {
|
||||
tiltPosition TiltPosition,
|
||||
positioningMode PositioningMode
|
||||
}
|
||||
|
||||
ZoomMagnification ::= INTEGER(10..1000)
|
||||
|
||||
PanView ::= INTEGER(-1000..1000)
|
||||
|
||||
TiltView ::= INTEGER(-1000..1000)
|
||||
|
||||
SlideNumber ::= INTEGER(0..1023)
|
||||
|
||||
SelectDirection ::= CHOICE {next NULL,
|
||||
previous NULL
|
||||
}
|
||||
|
||||
AutoSlideShowControl ::= CHOICE {start NULL,
|
||||
stop NULL,
|
||||
pause NULL
|
||||
}
|
||||
|
||||
AutoSlideDisplayTime ::=
|
||||
INTEGER(1..255) -- Automatic slide display time in seconds
|
||||
|
||||
|
||||
ProgramNumber ::= INTEGER(1..1023)
|
||||
|
||||
ProgramDuration ::= SEQUENCE {
|
||||
hours INTEGER(0..24),
|
||||
minutes INTEGER(0..59),
|
||||
seconds INTEGER(0..59),
|
||||
microseconds INTEGER(0..99999)
|
||||
}
|
||||
|
||||
PlaybackSpeed ::= SEQUENCE {
|
||||
scaleFactor INTEGER(10..1000),
|
||||
multiplyFactor BOOLEAN -- TRUE to multiply, FALSE to divide
|
||||
}
|
||||
|
||||
RecordForDuration ::= SEQUENCE {
|
||||
hours INTEGER(0..24),
|
||||
minutes INTEGER(0..59),
|
||||
seconds INTEGER(0..59)
|
||||
}
|
||||
|
||||
DeviceInputs ::= SEQUENCE {
|
||||
-- When used with the configurableVideoInputs type this device list must only contain
|
||||
-- devices that source a video stream.
|
||||
-- When used with the configurableAudioInputs type this device list must only contain
|
||||
-- devices that source an audio stream.
|
||||
inputDevices
|
||||
SET SIZE (2..64) OF
|
||||
SEQUENCE {deviceClass DeviceClass,
|
||||
deviceIdentifier DeviceID}
|
||||
}
|
||||
|
||||
ControlAttribute ::= CHOICE {
|
||||
setDeviceState DeviceState,
|
||||
setDeviceDate DeviceDate,
|
||||
setDeviceTime DeviceTime,
|
||||
setDevicePreset DevicePreset,
|
||||
setIrisMode Mode,
|
||||
setFocusMode Mode,
|
||||
setBackLightMode Mode,
|
||||
setPointingMode PointingToggle,
|
||||
selectCameraLens CameraLensNumber,
|
||||
selectCameraFilter CameraFilterNumber,
|
||||
gotoHomePosition NULL,
|
||||
selectExternalLight SelectExternalLight,
|
||||
clearCameraLens NULL,
|
||||
setCameraPanSpeed CameraPanSpeed,
|
||||
setCameraTiltSpeed CameraTiltSpeed,
|
||||
setBackLight BackLight,
|
||||
setWhiteBalance WhiteBalance,
|
||||
setWhiteBalanceMode Mode,
|
||||
calibrateWhiteBalance NULL,
|
||||
focusImage NULL,
|
||||
captureImage NULL,
|
||||
panContinuous PanContinuous,
|
||||
tiltContinuous TiltContinuous,
|
||||
zoomContinuous ZoomContinuous,
|
||||
focusContinuous FocusContinuous,
|
||||
setZoomPosition SetZoomPosition,
|
||||
setFocusPosition SetFocusPosition,
|
||||
setIrisPosition SetIrisPosition,
|
||||
setPanPosition SetPanPosition,
|
||||
setTiltPosition SetTiltPosition,
|
||||
setZoomMagnification ZoomMagnification,
|
||||
setPanView PanView,
|
||||
setTiltView TiltView,
|
||||
selectSlide SlideNumber,
|
||||
selectNextSlide SelectDirection,
|
||||
playAutoSlideShow AutoSlideShowControl,
|
||||
setAutoSlideDisplayTime AutoSlideDisplayTime,
|
||||
continuousRewindControl BOOLEAN, -- TRUE to start, FALSE to Stop
|
||||
continuousFastForwardControl BOOLEAN, -- TRUE to start, FALSE to Stop
|
||||
searchBackwardsControl BOOLEAN, -- TRUE to start, FALSE to Stop
|
||||
searchForwardsControl BOOLEAN, -- TRUE to start, FALSE to Stop
|
||||
pause BOOLEAN, -- TRUE to pause, FALSE to release
|
||||
selectProgram ProgramNumber,
|
||||
nextProgramSelect SelectDirection,
|
||||
gotoNormalPlayTimePoint ProgramDuration,
|
||||
continuousPlayBackMode BOOLEAN, -- TRUE to set continuous mode
|
||||
setPlaybackSpeed PlaybackSpeed,
|
||||
play BOOLEAN, -- TRUE to pause, FALSE to release
|
||||
setAudioOutputMute BOOLEAN, -- TRUE to mute, FALSE to unmute
|
||||
playToNormalPlayTimePoint ProgramDuration,
|
||||
record BOOLEAN, -- TRUE to start, FALSE to Stop
|
||||
recordForDuration RecordForDuration,
|
||||
configureVideoInputs DeviceInputs, -- Device list contains Video devices
|
||||
configureAudioInputs DeviceInputs, -- Device list contains Audio Devices
|
||||
nonStandardControl NonStandardParameter,
|
||||
...
|
||||
}
|
||||
|
||||
StatusAttributeIdentifier ::= CHOICE {
|
||||
getDeviceState NULL,
|
||||
getDeviceDate NULL,
|
||||
getDeviceTime NULL,
|
||||
getdevicePreset NULL,
|
||||
getIrisMode NULL,
|
||||
getFocusMode NULL,
|
||||
getBacklightMode NULL,
|
||||
getPointingMode NULL,
|
||||
getCameraLens NULL,
|
||||
getCameraFilter NULL,
|
||||
getExternalLight NULL,
|
||||
getCameraPanSpeed NULL,
|
||||
getCameraTiltSpeed NULL,
|
||||
getBackLightMode NULL,
|
||||
getBackLight NULL,
|
||||
getWhiteBalance NULL,
|
||||
getWhiteBalanceMode NULL,
|
||||
getZoomPosition NULL,
|
||||
getFocusPosition NULL,
|
||||
getIrisPosition NULL,
|
||||
getPanPosition NULL,
|
||||
getTiltPosition NULL,
|
||||
getSelectedSlide NULL,
|
||||
getAutoSlideDisplayTime NULL,
|
||||
getSelectedProgram NULL,
|
||||
getStreamPlayerState NULL,
|
||||
getCurrentProgramDuration NULL,
|
||||
getPlaybackSpeed NULL,
|
||||
getAudioOutputState NULL,
|
||||
getConfigurableVideoInputs NULL,
|
||||
getVideoInputs NULL,
|
||||
getConfigurableAudioInputs NULL,
|
||||
getAudioInputs NULL,
|
||||
getNonStandardStatus NonStandardIdentifier,
|
||||
...
|
||||
}
|
||||
|
||||
CurrentDeviceState ::= CHOICE {deviceState DeviceState,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentDeviceDate ::= SEQUENCE {
|
||||
currentDay CHOICE {day Day,
|
||||
unknown NULL},
|
||||
currentMonth CHOICE {month Month,
|
||||
unknown NULL},
|
||||
currentYear CHOICE {year Year,
|
||||
unknown NULL}
|
||||
}
|
||||
|
||||
CurrentDeviceTime ::= SEQUENCE {
|
||||
currentHour CHOICE {hour Hour,
|
||||
unknown NULL},
|
||||
currentMinute CHOICE {minute Minute,
|
||||
unknown NULL}
|
||||
}
|
||||
|
||||
CurrentDevicePreset ::= CHOICE {preset PresetNumber,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentMode ::= CHOICE {mode Mode,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentPointingMode ::= CHOICE {
|
||||
automatic NULL,
|
||||
manual NULL,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentCameraLensNumber ::= CHOICE {
|
||||
lensNumber CameraLensNumber,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentCameraFilterNumber ::= CHOICE {
|
||||
lensNumber CameraFilterNumber,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentExternalLight ::= CHOICE {
|
||||
lightNumber INTEGER(1..10),
|
||||
none NULL,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentCameraPanSpeed ::= CHOICE {speed CameraPanSpeed,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentCameraTiltSpeed ::= CHOICE {speed CameraTiltSpeed,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentBackLight ::= CHOICE {backLight BackLight,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentWhiteBalance ::= CHOICE {whiteBalance WhiteBalance,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentZoomPosition ::= CHOICE {zoomPosition ZoomPosition,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentFocusPosition ::= CHOICE {
|
||||
focusPosition FocusPosition,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentIrisPosition ::= CHOICE {irisPosition IrisPosition,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentPanPosition ::= CHOICE {panPosition PanPosition,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentTiltPosition ::= CHOICE {tiltPosition TiltPosition,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentSlide ::= CHOICE {slide SlideNumber,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentAutoSlideDisplayTime ::= CHOICE {
|
||||
time AutoSlideDisplayTime,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentSelectedProgram ::= CHOICE {program ProgramNumber,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentStreamPlayerState ::= CHOICE {state StreamPlayerState,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentPlaybackSpeed ::= CHOICE {speed PlaybackSpeed,
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
CurrentAudioOutputMute ::= CHOICE {
|
||||
mute BOOLEAN, -- TRUE if muted
|
||||
unknown NULL
|
||||
}
|
||||
|
||||
StatusAttribute ::= CHOICE {
|
||||
currentdeviceState CurrentDeviceState,
|
||||
currentDeviceDate CurrentDeviceDate,
|
||||
currentDeviceTime CurrentDeviceTime,
|
||||
currentDevicePreset CurrentDevicePreset,
|
||||
currentIrisMode CurrentMode,
|
||||
currentFocusMode CurrentMode,
|
||||
currentBackLightMode CurrentMode,
|
||||
currentPointingMode CurrentPointingMode,
|
||||
currentCameraLens CurrentCameraLensNumber,
|
||||
currentCameraFilter CurrentCameraFilterNumber,
|
||||
currentExternalLight CurrentExternalLight,
|
||||
currentCameraPanSpeed CurrentCameraPanSpeed,
|
||||
currentCameraTiltSpeed CurrentCameraTiltSpeed,
|
||||
currentBackLight CurrentBackLight,
|
||||
currentWhiteBalance CurrentWhiteBalance,
|
||||
currentWhiteBalanceMode CurrentMode,
|
||||
currentZoomPosition CurrentZoomPosition,
|
||||
currentFocusPosition CurrentFocusPosition,
|
||||
currentIrisPosition CurrentIrisPosition,
|
||||
currentPanPosition CurrentPanPosition,
|
||||
currentTiltPosition CurrentTiltPosition,
|
||||
currentSlide CurrentSlide,
|
||||
currentAutoSlideDisplayTime CurrentAutoSlideDisplayTime,
|
||||
currentSelectedProgram CurrentSelectedProgram,
|
||||
currentstreamPlayerState CurrentStreamPlayerState,
|
||||
currentProgramDuration ProgramDuration,
|
||||
currentPlaybackSpeed CurrentPlaybackSpeed,
|
||||
currentAudioOutputMute CurrentAudioOutputMute,
|
||||
configurableVideoInputs DeviceInputs,
|
||||
videoInputs DeviceInputs,
|
||||
configurableAudioInputs DeviceInputs,
|
||||
audioInputs DeviceInputs,
|
||||
nonStandardStatus NonStandardParameter,
|
||||
...
|
||||
}
|
||||
|
||||
DeviceEventIdentifier ::= CHOICE {
|
||||
requestDeviceLockChanged NULL,
|
||||
requestDeviceAvailabilityChanged NULL,
|
||||
requestCameraPannedToLimit NULL,
|
||||
requestCameraTiltedToLimit NULL,
|
||||
requestCameraZoomedToLimit NULL,
|
||||
requestCameraFocusedToLimit NULL,
|
||||
requestAutoSlideShowFinished NULL,
|
||||
requestStreamPlayerStateChange NULL,
|
||||
requestStreamPlayerProgramChange NULL,
|
||||
requestNonStandardEvent NonStandardIdentifier,
|
||||
...
|
||||
}
|
||||
|
||||
CameraPannedToLimit ::= CHOICE {left NULL,
|
||||
right NULL
|
||||
}
|
||||
|
||||
CameraTiltedToLimit ::= CHOICE {up NULL,
|
||||
down NULL
|
||||
}
|
||||
|
||||
CameraZoomedToLimit ::= CHOICE {telescopic NULL,
|
||||
wide NULL
|
||||
}
|
||||
|
||||
CameraFocusedToLimit ::= CHOICE {near NULL,
|
||||
far NULL
|
||||
}
|
||||
|
||||
DeviceEvent ::= CHOICE {
|
||||
deviceLockChanged BOOLEAN, -- TRUE if now locked FALSE if now unlocked
|
||||
deviceAvailabilityChanged BOOLEAN, -- TRUE if available FALSE if now unavailable
|
||||
cameraPannedToLimit CameraPannedToLimit,
|
||||
cameraTiltedToLimit CameraTiltedToLimit,
|
||||
cameraZoomedToLimit CameraZoomedToLimit,
|
||||
cameraFocusedToLimit CameraFocusedToLimit,
|
||||
autoSlideShowFinished NULL,
|
||||
streamPlayerStateChange StreamPlayerState,
|
||||
streamPlayerProgramChange ProgramNumber,
|
||||
nonStandardEvent NonStandardParameter,
|
||||
...
|
||||
}
|
||||
|
||||
-- ==========================================================================
|
||||
-- Part 2: PDU Messages
|
||||
-- ==========================================================================
|
||||
SourceSelectRequest ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
deviceClass DeviceClass,
|
||||
deviceID DeviceID,
|
||||
streamIdentifier StreamID,
|
||||
...
|
||||
}
|
||||
|
||||
SourceSelectResponse ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
result
|
||||
CHOICE {successful NULL,
|
||||
requestDenied NULL,
|
||||
deviceUnavailable NULL,
|
||||
invalidStreamID NULL,
|
||||
currentDeviceIsLocked NULL,
|
||||
deviceIncompatible NULL,
|
||||
...},
|
||||
...
|
||||
}
|
||||
|
||||
SourceEventsRequest ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
streamIdentifier StreamID,
|
||||
sourceEventNotify BOOLEAN, -- TRUE to request source events
|
||||
...
|
||||
}
|
||||
|
||||
SourceEventsResponse ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
deviceClass DeviceClass,
|
||||
deviceID DeviceID,
|
||||
result
|
||||
CHOICE {successful NULL,
|
||||
eventsNotSupported NULL,
|
||||
invalidStreamID NULL,
|
||||
...},
|
||||
...
|
||||
}
|
||||
|
||||
SourceChangeEventIndication ::= SEQUENCE {
|
||||
deviceClass DeviceClass,
|
||||
deviceID DeviceID,
|
||||
...
|
||||
}
|
||||
|
||||
DeviceAttributeRequest ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
deviceClass DeviceClass,
|
||||
deviceID DeviceID,
|
||||
...
|
||||
}
|
||||
|
||||
DeviceAttributeResponse ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
deviceAttributeList SET OF DeviceAttribute OPTIONAL,
|
||||
result
|
||||
CHOICE {successful NULL,
|
||||
requestDenied NULL,
|
||||
unknownDevice NULL,
|
||||
...},
|
||||
...
|
||||
}
|
||||
|
||||
DeviceLockRequest ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
deviceClass DeviceClass,
|
||||
deviceID DeviceID,
|
||||
lockFlag BOOLEAN, -- TRUE to lock
|
||||
...
|
||||
}
|
||||
|
||||
DeviceLockResponse ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
result
|
||||
CHOICE {successful NULL,
|
||||
requestDenied NULL,
|
||||
unknownDevice NULL,
|
||||
lockingNotSupported NULL,
|
||||
deviceAlreadyLocked NULL,
|
||||
...},
|
||||
...
|
||||
}
|
||||
|
||||
DeviceLockEnquireRequest ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
deviceClass DeviceClass,
|
||||
deviceID DeviceID,
|
||||
...
|
||||
}
|
||||
|
||||
DeviceLockEnquireResponse ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
result
|
||||
CHOICE {lockRequired NULL,
|
||||
lockNotRequired NULL,
|
||||
unknownDevice NULL,
|
||||
...},
|
||||
...
|
||||
}
|
||||
|
||||
DeviceLockTerminatedIndication ::= SEQUENCE {
|
||||
deviceClass DeviceClass,
|
||||
deviceID DeviceID,
|
||||
...
|
||||
}
|
||||
|
||||
DeviceControlRequest ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
deviceClass DeviceClass,
|
||||
deviceID DeviceID,
|
||||
controlAttributeList SET SIZE (1..8) OF ControlAttribute,
|
||||
...
|
||||
}
|
||||
|
||||
DeviceStatusEnquireRequest ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
deviceClass DeviceClass,
|
||||
deviceID DeviceID,
|
||||
statusAttributeIdentifierList SET SIZE (1..16) OF StatusAttributeIdentifier,
|
||||
...
|
||||
}
|
||||
|
||||
DeviceStatusEnquireResponse ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
statusAttributeList SET SIZE (1..16) OF StatusAttribute OPTIONAL,
|
||||
result
|
||||
CHOICE {successful NULL,
|
||||
requestDenied NULL,
|
||||
unknownDevice NULL,
|
||||
deviceUnavailable NULL,
|
||||
deviceAttributeError NULL,
|
||||
...},
|
||||
...
|
||||
}
|
||||
|
||||
ConfigureDeviceEventsRequest ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
deviceClass DeviceClass,
|
||||
deviceID DeviceID,
|
||||
deviceEventIdentifierList SET OF DeviceEventIdentifier,
|
||||
...
|
||||
}
|
||||
|
||||
ConfigureDeviceEventsResponse ::= SEQUENCE {
|
||||
requestHandle Handle,
|
||||
result
|
||||
CHOICE {successful NULL,
|
||||
requestDenied NULL,
|
||||
unknownDevice NULL,
|
||||
deviceUnavailable NULL,
|
||||
deviceAttributeError NULL,
|
||||
...},
|
||||
...
|
||||
}
|
||||
|
||||
DeviceEventNotifyIndication ::= SEQUENCE {
|
||||
deviceClass DeviceClass,
|
||||
deviceID DeviceID,
|
||||
deviceEventList SET SIZE (1..8) OF DeviceEvent,
|
||||
...
|
||||
}
|
||||
|
||||
NonStandardPDU ::= SEQUENCE {nonStandardData NonStandardParameter,
|
||||
...
|
||||
}
|
||||
|
||||
-- ==========================================================================
|
||||
-- Part 3: Messages sent using lower layer protocol
|
||||
-- ==========================================================================
|
||||
RDCPDU ::= CHOICE {
|
||||
request RequestPDU,
|
||||
response ResponsePDU,
|
||||
indication IndicationPDU
|
||||
}
|
||||
|
||||
RequestPDU ::= CHOICE {
|
||||
sourceSelectRequest SourceSelectRequest,
|
||||
sourceEventsRequest SourceEventsRequest,
|
||||
deviceAttributeRequest DeviceAttributeRequest,
|
||||
deviceLockRequest DeviceLockRequest,
|
||||
deviceLockEnquireRequest DeviceLockEnquireRequest,
|
||||
deviceControlRequest DeviceControlRequest,
|
||||
deviceStatusEnquireRequest DeviceStatusEnquireRequest,
|
||||
configureDeviceEventsRequest ConfigureDeviceEventsRequest,
|
||||
nonStandardRequest NonStandardPDU,
|
||||
...
|
||||
}
|
||||
|
||||
ResponsePDU ::= CHOICE {
|
||||
sourceSelectResponse SourceSelectResponse,
|
||||
sourceEventsResponse SourceEventsResponse,
|
||||
deviceAttributeResponse DeviceAttributeResponse,
|
||||
deviceLockResponse DeviceLockResponse,
|
||||
deviceLockEnquireResponse DeviceLockEnquireResponse,
|
||||
deviceStatusEnquireResponse DeviceStatusEnquireResponse,
|
||||
configureDeviceEventsResponse ConfigureDeviceEventsResponse,
|
||||
nonStandardResponse NonStandardPDU,
|
||||
...
|
||||
}
|
||||
|
||||
IndicationPDU ::= CHOICE {
|
||||
sourceChangeEventIndication SourceChangeEventIndication,
|
||||
deviceLockTerminatedIndication DeviceLockTerminatedIndication,
|
||||
deviceEventNotifyIndication DeviceEventNotifyIndication,
|
||||
nonStandardIndication NonStandardPDU,
|
||||
...
|
||||
}
|
||||
|
||||
END
|
||||
|
||||
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
# h282.cnf
|
||||
# H.282 conformation file
|
||||
# 2007 Tomas Kukosa
|
||||
|
||||
# $Id$
|
||||
|
||||
#.OPT
|
||||
PER
|
||||
ALIGNED
|
||||
#.END
|
||||
|
||||
#.PDU_NEW
|
||||
RDCPDU
|
||||
NonCollapsingCapabilities
|
||||
#.END
|
||||
|
||||
#.FN_PARS RequestPDU
|
||||
VAL_PTR = &msg_type
|
||||
#.FN_HDR
|
||||
gint32 msg_type = -1;
|
||||
const gchar *p = NULL;
|
||||
#.FN_FTR
|
||||
p = match_strval(msg_type, VALS(h282_RequestPDU_vals));
|
||||
if (p && check_col(actx->pinfo->cinfo, COL_INFO))
|
||||
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "RequestPDU/%s", p);
|
||||
#.END
|
||||
|
||||
#.FN_PARS ResponsePDU
|
||||
VAL_PTR = &msg_type
|
||||
#.FN_HDR
|
||||
gint32 msg_type = -1;
|
||||
const gchar *p = NULL;
|
||||
#.FN_FTR
|
||||
p = match_strval(msg_type, VALS(h282_ResponsePDU_vals));
|
||||
if (p && check_col(actx->pinfo->cinfo, COL_INFO))
|
||||
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "ResponsePDU/%s", p);
|
||||
#.END
|
||||
|
||||
#.FN_PARS IndicationPDU
|
||||
VAL_PTR = &msg_type
|
||||
#.FN_HDR
|
||||
gint32 msg_type = -1;
|
||||
const gchar *p = NULL;
|
||||
#.FN_FTR
|
||||
p = match_strval(msg_type, VALS(h282_IndicationPDU_vals));
|
||||
if (p && check_col(actx->pinfo->cinfo, COL_INFO))
|
||||
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "IndicationPDU/%s", p);
|
||||
#.END
|
|
@ -0,0 +1,106 @@
|
|||
/* packet-h282.c
|
||||
* Routines for H.282 packet dissection
|
||||
* 2007 Tomas Kukosa
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* Wireshark - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@wireshark.org>
|
||||
* Copyright 1998 Gerald Combs
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include <glib.h>
|
||||
#include <epan/packet.h>
|
||||
#include <epan/prefs.h>
|
||||
#include <epan/conversation.h>
|
||||
#include <epan/oids.h>
|
||||
#include <epan/asn1.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "packet-per.h"
|
||||
|
||||
#define PNAME "H.282 Remote Device Control"
|
||||
#define PSNAME "RDC"
|
||||
#define PFNAME "rdc"
|
||||
|
||||
/* Initialize the protocol and registered fields */
|
||||
int proto_h282 = -1;
|
||||
#include "packet-h282-hf.c"
|
||||
|
||||
/* Initialize the subtree pointers */
|
||||
static int ett_h282 = -1;
|
||||
#include "packet-h282-ett.c"
|
||||
|
||||
/* Dissectors */
|
||||
|
||||
/* Subdissectors */
|
||||
|
||||
#include "packet-h282-fn.c"
|
||||
|
||||
static int
|
||||
dissect_h282(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
proto_item *ti = NULL;
|
||||
proto_tree *h282_tree = NULL;
|
||||
|
||||
if (check_col(pinfo->cinfo, COL_PROTOCOL))
|
||||
col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
|
||||
|
||||
ti = proto_tree_add_item(tree, proto_h282, tvb, 0, -1, FALSE);
|
||||
h282_tree = proto_item_add_subtree(ti, ett_h282);
|
||||
|
||||
return dissect_RDCPDU_PDU(tvb, pinfo, h282_tree);
|
||||
}
|
||||
|
||||
/*--- proto_register_h282 ----------------------------------------------*/
|
||||
void proto_register_h282(void) {
|
||||
|
||||
/* List of fields */
|
||||
static hf_register_info hf[] = {
|
||||
#include "packet-h282-hfarr.c"
|
||||
};
|
||||
|
||||
/* List of subtrees */
|
||||
static gint *ett[] = {
|
||||
&ett_h282,
|
||||
#include "packet-h282-ettarr.c"
|
||||
};
|
||||
|
||||
/* Register protocol */
|
||||
proto_h282 = proto_register_protocol(PNAME, PSNAME, PFNAME);
|
||||
|
||||
/* Register fields and subtrees */
|
||||
proto_register_field_array(proto_h282, hf, array_length(hf));
|
||||
proto_register_subtree_array(ett, array_length(ett));
|
||||
|
||||
register_dissector(PFNAME, dissect_h282, proto_h282);
|
||||
register_dissector(PFNAME".device_list", dissect_NonCollapsingCapabilities_PDU, proto_h282);
|
||||
|
||||
}
|
||||
|
||||
/*--- proto_reg_handoff_h282 -------------------------------------------*/
|
||||
void proto_reg_handoff_h282(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h283/1999/LCT-PROTOCOL.asn
|
||||
|
||||
-- Module LCT-PROTOCOL (H.283:05/1999)
|
||||
LCT-PROTOCOL {itu-t recommendation h 283 version(0) 1} DEFINITIONS AUTOMATIC
|
||||
TAGS ::=
|
||||
BEGIN
|
||||
|
||||
H221NonStandard ::= SEQUENCE {
|
||||
t35CountryCode INTEGER(0..255), -- country, as per Recommendation T.35
|
||||
t35Extension INTEGER(0..255), -- assigned nationally
|
||||
manufacturerCode INTEGER(0..65535)
|
||||
} -- assigned nationally
|
||||
|
||||
NonStandardIdentifier ::= CHOICE {
|
||||
object OBJECT IDENTIFIER,
|
||||
h221NonStandard H221NonStandard,
|
||||
...
|
||||
}
|
||||
|
||||
NonStandardParameter ::= SEQUENCE {
|
||||
nonStandardIdentifier NonStandardIdentifier,
|
||||
data OCTET STRING
|
||||
}
|
||||
|
||||
LCTPDU ::= SEQUENCE {
|
||||
srcAddr MTAddress,
|
||||
dstAddr MTAddress,
|
||||
timestamp INTEGER(0..4294967295), -- milliseconds
|
||||
seqNumber INTEGER(0..65535),
|
||||
pduType CHOICE {ack NULL,
|
||||
rdcData RDCData},
|
||||
nonStandardParameters SEQUENCE OF NonStandardParameter OPTIONAL,
|
||||
...
|
||||
}
|
||||
|
||||
MTAddress ::= SEQUENCE {
|
||||
mAddress INTEGER(0..65535),
|
||||
tAddress INTEGER(0..65535)
|
||||
}
|
||||
|
||||
RDCData ::= SEQUENCE {
|
||||
reliable BOOLEAN,
|
||||
dataType CHOICE {lctMessage LCTMessage,
|
||||
rdcPDU OCTET STRING}, -- Common RDC PDU
|
||||
...
|
||||
}
|
||||
|
||||
LCTMessage ::= CHOICE {
|
||||
lctRequest LCTRequest,
|
||||
lctResponse LCTResponse,
|
||||
lctIndication LCTIndication,
|
||||
nonStandardMessage NonStandardMessage,
|
||||
...
|
||||
}
|
||||
|
||||
LCTRequest ::= CHOICE {announceReq NULL,
|
||||
deviceListReq NULL,
|
||||
...
|
||||
}
|
||||
|
||||
LCTResponse ::= CHOICE {
|
||||
announceResp NULL,
|
||||
deviceListResp OCTET STRING, -- Common RDC
|
||||
...
|
||||
}
|
||||
|
||||
LCTIndication ::= CHOICE {deviceChange NULL,
|
||||
...
|
||||
}
|
||||
|
||||
NonStandardMessage ::= SEQUENCE {
|
||||
nonStandardParameters SEQUENCE OF NonStandardParameter OPTIONAL,
|
||||
...
|
||||
}
|
||||
|
||||
END
|
||||
|
||||
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# $Id$
|
||||
#
|
||||
#
|
||||
# Wireshark - Network traffic analyzer
|
||||
# By Gerald Combs <gerald@wireshark.org>
|
||||
# Copyright 1998 Gerald Combs
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
|
||||
include ../Makefile.preinc
|
||||
include Makefile.common
|
||||
include ../Makefile.inc
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# $Id$
|
||||
#
|
||||
#
|
||||
# Wireshark - Network traffic analyzer
|
||||
# By Gerald Combs <gerald@wireshark.org>
|
||||
# Copyright 1998 Gerald Combs
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
|
||||
PROTOCOL_NAME = h283
|
||||
|
||||
DISSECTOR_FILES = \
|
||||
packet-$(PROTOCOL_NAME).c
|
||||
|
||||
# NEED_PACKET_PROTO_H =
|
||||
|
||||
EXT_ASN_FILE_LIST =
|
||||
|
||||
ASN_FILE_LIST = \
|
||||
LCT-PROTOCOL.asn
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(ASN_FILE_LIST) \
|
||||
packet-$(PROTOCOL_NAME)-template.c \
|
||||
$(PROTOCOL_NAME).cnf
|
||||
|
||||
SRC_FILES = \
|
||||
$(EXTRA_DIST) \
|
||||
$(EXT_ASN_FILE_LIST)
|
||||
|
||||
A2W_FLAGS =
|
||||
|
||||
EXTRA_CNF =
|
|
@ -0,0 +1,29 @@
|
|||
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
#
|
||||
# Wireshark - Network traffic analyzer
|
||||
# By Gerald Combs <gerald@wireshark.org>
|
||||
# Copyright 1998 Gerald Combs
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
|
||||
include ../../config.nmake
|
||||
include ../Makefile.preinc.nmake
|
||||
include Makefile.common
|
||||
include ../Makefile.inc.nmake
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
# h283.cnf
|
||||
# H.283 conformation file
|
||||
# 2007 Tomas Kukosa
|
||||
|
||||
# $Id$
|
||||
|
||||
#.OPT
|
||||
PER
|
||||
ALIGNED
|
||||
#.END
|
||||
|
||||
#.PDU_NEW
|
||||
LCTPDU
|
||||
#.END
|
||||
|
||||
#.FN_PARS LCTPDU/pduType
|
||||
VAL_PTR = &pdu_type
|
||||
#.FN_HDR
|
||||
gint32 pdu_type = -1;
|
||||
const gchar *p = NULL;
|
||||
#.FN_FTR
|
||||
p = match_strval(pdu_type, VALS(h283_T_pduType_vals));
|
||||
if (!info_is_set && p && check_col(actx->pinfo->cinfo, COL_INFO)) {
|
||||
col_set_str(actx->pinfo->cinfo, COL_INFO, p);
|
||||
info_is_set = TRUE;
|
||||
}
|
||||
#.END
|
||||
|
||||
#.FN_PARS RDCData/dataType
|
||||
VAL_PTR = &data_type
|
||||
#.FN_HDR
|
||||
gint32 data_type = -1;
|
||||
const gchar *p = NULL;
|
||||
#.FN_FTR
|
||||
p = match_strval(data_type, VALS(h283_T_dataType_vals));
|
||||
if (!info_is_set && p && check_col(actx->pinfo->cinfo, COL_INFO)) {
|
||||
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "RDCData/%s", p);
|
||||
info_is_set = TRUE;
|
||||
}
|
||||
#.END
|
||||
|
||||
#.FN_PARS LCTMessage
|
||||
VAL_PTR = &msg_type
|
||||
#.FN_HDR
|
||||
gint32 msg_type = -1;
|
||||
const gchar *p = NULL;
|
||||
#.FN_FTR
|
||||
p = match_strval(msg_type, VALS(h283_LCTMessage_vals));
|
||||
if (!info_is_set && p && check_col(actx->pinfo->cinfo, COL_INFO)) {
|
||||
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "LCTMessage/%s", p);
|
||||
info_is_set = TRUE;
|
||||
}
|
||||
#.END
|
||||
|
||||
#.FN_PARS LCTRequest
|
||||
VAL_PTR = &msg_type
|
||||
#.FN_HDR
|
||||
gint32 msg_type = -1;
|
||||
const gchar *p = NULL;
|
||||
#.FN_FTR
|
||||
p = match_strval(msg_type, VALS(h283_LCTRequest_vals));
|
||||
if (!info_is_set && p && check_col(actx->pinfo->cinfo, COL_INFO)) {
|
||||
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "LCTRequest/%s", p);
|
||||
info_is_set = TRUE;
|
||||
}
|
||||
#.END
|
||||
|
||||
#.FN_PARS LCTResponse
|
||||
VAL_PTR = &msg_type
|
||||
#.FN_HDR
|
||||
gint32 msg_type = -1;
|
||||
const gchar *p = NULL;
|
||||
#.FN_FTR
|
||||
p = match_strval(msg_type, VALS(h283_LCTResponse_vals));
|
||||
if (!info_is_set && p && check_col(actx->pinfo->cinfo, COL_INFO)) {
|
||||
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "LCTResponse/%s", p);
|
||||
info_is_set = TRUE;
|
||||
}
|
||||
#.END
|
||||
|
||||
#.FN_PARS LCTIndication
|
||||
VAL_PTR = &msg_type
|
||||
#.FN_HDR
|
||||
gint32 msg_type = -1;
|
||||
const gchar *p = NULL;
|
||||
#.FN_FTR
|
||||
p = match_strval(msg_type, VALS(h283_LCTIndication_vals));
|
||||
if (!info_is_set && p && check_col(actx->pinfo->cinfo, COL_INFO)) {
|
||||
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "LCTIndication/%s", p);
|
||||
info_is_set = TRUE;
|
||||
}
|
||||
#.END
|
||||
|
||||
#.FN_BODY RDCData/dataType/rdcPDU VAL_PTR = &next_tvb
|
||||
tvbuff_t *next_tvb = NULL;
|
||||
|
||||
%(DEFAULT_BODY)s
|
||||
if (next_tvb && tvb_length(next_tvb)) {
|
||||
call_dissector((rdc_pdu_handle)?rdc_pdu_handle:data_handle, next_tvb, %(ACTX)s->pinfo, proto_tree_get_root(tree));
|
||||
}
|
||||
info_is_set = TRUE;
|
||||
#.END
|
||||
|
||||
#.FN_BODY LCTResponse/deviceListResp VAL_PTR = &next_tvb
|
||||
tvbuff_t *next_tvb = NULL;
|
||||
|
||||
%(DEFAULT_BODY)s
|
||||
if (next_tvb && tvb_length(next_tvb)) {
|
||||
call_dissector((rdc_device_list_handle)?rdc_device_list_handle:data_handle, next_tvb, %(ACTX)s->pinfo, tree);
|
||||
}
|
||||
#.END
|
||||
|
||||
#.TYPE_ATTR
|
||||
RDCData/dataType/rdcPDU TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
||||
LCTResponse/deviceListResp TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
||||
#.END
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
/* packet-h283.c
|
||||
* Routines for H.283 packet dissection
|
||||
* 2007 Tomas Kukosa
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* Wireshark - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@wireshark.org>
|
||||
* Copyright 1998 Gerald Combs
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include <glib.h>
|
||||
#include <epan/packet.h>
|
||||
#include <epan/prefs.h>
|
||||
#include <epan/conversation.h>
|
||||
#include <epan/oids.h>
|
||||
#include <epan/asn1.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "packet-per.h"
|
||||
|
||||
#define PNAME "H.283 Logical Channel Transport"
|
||||
#define PSNAME "LCT"
|
||||
#define PFNAME "lct"
|
||||
|
||||
/* Initialize the protocol and registered fields */
|
||||
int proto_h283 = -1;
|
||||
#include "packet-h283-hf.c"
|
||||
|
||||
/* Initialize the subtree pointers */
|
||||
static int ett_h283 = -1;
|
||||
#include "packet-h283-ett.c"
|
||||
|
||||
/* Dissectors */
|
||||
static dissector_handle_t h283_udp_handle = NULL;
|
||||
|
||||
/* Subdissectors */
|
||||
static dissector_handle_t rdc_pdu_handle = NULL;
|
||||
static dissector_handle_t rdc_device_list_handle = NULL;
|
||||
static dissector_handle_t data_handle = NULL;
|
||||
|
||||
static gboolean info_is_set;
|
||||
|
||||
#include "packet-h283-fn.c"
|
||||
|
||||
static int
|
||||
dissect_h283_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
proto_item *ti = NULL;
|
||||
proto_tree *h283_tree = NULL;
|
||||
|
||||
if (check_col(pinfo->cinfo, COL_PROTOCOL))
|
||||
col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
|
||||
|
||||
info_is_set = FALSE;
|
||||
|
||||
ti = proto_tree_add_item(tree, proto_h283, tvb, 0, -1, FALSE);
|
||||
h283_tree = proto_item_add_subtree(ti, ett_h283);
|
||||
|
||||
return dissect_LCTPDU_PDU(tvb, pinfo, h283_tree);
|
||||
}
|
||||
|
||||
/*--- proto_register_h283 ----------------------------------------------*/
|
||||
void proto_register_h283(void) {
|
||||
|
||||
/* List of fields */
|
||||
static hf_register_info hf[] = {
|
||||
#include "packet-h283-hfarr.c"
|
||||
};
|
||||
|
||||
/* List of subtrees */
|
||||
static gint *ett[] = {
|
||||
&ett_h283,
|
||||
#include "packet-h283-ettarr.c"
|
||||
};
|
||||
|
||||
/* Register protocol */
|
||||
proto_h283 = proto_register_protocol(PNAME, PSNAME, PFNAME);
|
||||
|
||||
/* Register fields and subtrees */
|
||||
proto_register_field_array(proto_h283, hf, array_length(hf));
|
||||
proto_register_subtree_array(ett, array_length(ett));
|
||||
|
||||
register_dissector(PFNAME, dissect_h283_udp, proto_h283);
|
||||
h283_udp_handle = find_dissector(PFNAME);
|
||||
|
||||
}
|
||||
|
||||
/*--- proto_reg_handoff_h283 -------------------------------------------*/
|
||||
void proto_reg_handoff_h283(void)
|
||||
{
|
||||
|
||||
dissector_add_handle("udp.port", h283_udp_handle);
|
||||
|
||||
rdc_pdu_handle = find_dissector("rdc");
|
||||
rdc_device_list_handle = find_dissector("rdc.device_list");
|
||||
data_handle = find_dissector("data");
|
||||
}
|
||||
|
|
@ -1491,6 +1491,8 @@ AC_OUTPUT(
|
|||
asn1/h235/Makefile
|
||||
asn1/h245/Makefile
|
||||
asn1/h248/Makefile
|
||||
asn1/h282/Makefile
|
||||
asn1/h283/Makefile
|
||||
asn1/h323/Makefile
|
||||
asn1/h450/Makefile
|
||||
asn1/h450-ros/Makefile
|
||||
|
|
|
@ -102,6 +102,8 @@ ASN_DISSECTOR_SRC = \
|
|||
packet-h235.c \
|
||||
packet-h245.c \
|
||||
packet-h248.c \
|
||||
packet-h282.c \
|
||||
packet-h283.c \
|
||||
packet-h323.c \
|
||||
packet-h450.c \
|
||||
packet-h450-ros.c \
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,784 @@
|
|||
/* Do not modify this file. */
|
||||
/* It is created automatically by the ASN.1 to Wireshark dissector compiler */
|
||||
/* packet-h283.c */
|
||||
/* ../../tools/asn2wrs.py -p h283 -c h283.cnf -s packet-h283-template LCT-PROTOCOL.asn */
|
||||
|
||||
/* Input file: packet-h283-template.c */
|
||||
|
||||
#line 1 "packet-h283-template.c"
|
||||
/* packet-h283.c
|
||||
* Routines for H.283 packet dissection
|
||||
* 2007 Tomas Kukosa
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* Wireshark - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@wireshark.org>
|
||||
* Copyright 1998 Gerald Combs
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include <glib.h>
|
||||
#include <epan/packet.h>
|
||||
#include <epan/prefs.h>
|
||||
#include <epan/conversation.h>
|
||||
#include <epan/oids.h>
|
||||
#include <epan/asn1.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "packet-per.h"
|
||||
|
||||
#define PNAME "H.283 Logical Channel Transport"
|
||||
#define PSNAME "LCT"
|
||||
#define PFNAME "lct"
|
||||
|
||||
/* Initialize the protocol and registered fields */
|
||||
int proto_h283 = -1;
|
||||
|
||||
/*--- Included file: packet-h283-hf.c ---*/
|
||||
#line 1 "packet-h283-hf.c"
|
||||
static int hf_h283_LCTPDU_PDU = -1; /* LCTPDU */
|
||||
static int hf_h283_t35CountryCode = -1; /* INTEGER_0_255 */
|
||||
static int hf_h283_t35Extension = -1; /* INTEGER_0_255 */
|
||||
static int hf_h283_manufacturerCode = -1; /* INTEGER_0_65535 */
|
||||
static int hf_h283_object = -1; /* OBJECT_IDENTIFIER */
|
||||
static int hf_h283_h221NonStandard = -1; /* H221NonStandard */
|
||||
static int hf_h283_nonStandardIdentifier = -1; /* NonStandardIdentifier */
|
||||
static int hf_h283_data = -1; /* OCTET_STRING */
|
||||
static int hf_h283_srcAddr = -1; /* MTAddress */
|
||||
static int hf_h283_dstAddr = -1; /* MTAddress */
|
||||
static int hf_h283_timestamp = -1; /* INTEGER_0_4294967295 */
|
||||
static int hf_h283_seqNumber = -1; /* INTEGER_0_65535 */
|
||||
static int hf_h283_pduType = -1; /* T_pduType */
|
||||
static int hf_h283_ack = -1; /* NULL */
|
||||
static int hf_h283_rdcData = -1; /* RDCData */
|
||||
static int hf_h283_nonStandardParameters = -1; /* SEQUENCE_OF_NonStandardParameter */
|
||||
static int hf_h283_nonStandardParameters_item = -1; /* NonStandardParameter */
|
||||
static int hf_h283_mAddress = -1; /* INTEGER_0_65535 */
|
||||
static int hf_h283_tAddress = -1; /* INTEGER_0_65535 */
|
||||
static int hf_h283_reliable = -1; /* BOOLEAN */
|
||||
static int hf_h283_dataType = -1; /* T_dataType */
|
||||
static int hf_h283_lctMessage = -1; /* LCTMessage */
|
||||
static int hf_h283_rdcPDU = -1; /* T_rdcPDU */
|
||||
static int hf_h283_lctRequest = -1; /* LCTRequest */
|
||||
static int hf_h283_lctResponse = -1; /* LCTResponse */
|
||||
static int hf_h283_lctIndication = -1; /* LCTIndication */
|
||||
static int hf_h283_nonStandardMessage = -1; /* NonStandardMessage */
|
||||
static int hf_h283_announceReq = -1; /* NULL */
|
||||
static int hf_h283_deviceListReq = -1; /* NULL */
|
||||
static int hf_h283_announceResp = -1; /* NULL */
|
||||
static int hf_h283_deviceListResp = -1; /* T_deviceListResp */
|
||||
static int hf_h283_deviceChange = -1; /* NULL */
|
||||
|
||||
/*--- End of included file: packet-h283-hf.c ---*/
|
||||
#line 49 "packet-h283-template.c"
|
||||
|
||||
/* Initialize the subtree pointers */
|
||||
static int ett_h283 = -1;
|
||||
|
||||
/*--- Included file: packet-h283-ett.c ---*/
|
||||
#line 1 "packet-h283-ett.c"
|
||||
static gint ett_h283_H221NonStandard = -1;
|
||||
static gint ett_h283_NonStandardIdentifier = -1;
|
||||
static gint ett_h283_NonStandardParameter = -1;
|
||||
static gint ett_h283_LCTPDU = -1;
|
||||
static gint ett_h283_T_pduType = -1;
|
||||
static gint ett_h283_SEQUENCE_OF_NonStandardParameter = -1;
|
||||
static gint ett_h283_MTAddress = -1;
|
||||
static gint ett_h283_RDCData = -1;
|
||||
static gint ett_h283_T_dataType = -1;
|
||||
static gint ett_h283_LCTMessage = -1;
|
||||
static gint ett_h283_LCTRequest = -1;
|
||||
static gint ett_h283_LCTResponse = -1;
|
||||
static gint ett_h283_LCTIndication = -1;
|
||||
static gint ett_h283_NonStandardMessage = -1;
|
||||
|
||||
/*--- End of included file: packet-h283-ett.c ---*/
|
||||
#line 53 "packet-h283-template.c"
|
||||
|
||||
/* Dissectors */
|
||||
static dissector_handle_t h283_udp_handle = NULL;
|
||||
|
||||
/* Subdissectors */
|
||||
static dissector_handle_t rdc_pdu_handle = NULL;
|
||||
static dissector_handle_t rdc_device_list_handle = NULL;
|
||||
static dissector_handle_t data_handle = NULL;
|
||||
|
||||
static gboolean info_is_set;
|
||||
|
||||
|
||||
/*--- Included file: packet-h283-fn.c ---*/
|
||||
#line 1 "packet-h283-fn.c"
|
||||
|
||||
|
||||
static int
|
||||
dissect_h283_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
|
||||
0U, 255U, NULL, FALSE);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
dissect_h283_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
|
||||
0U, 65535U, NULL, FALSE);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const per_sequence_t H221NonStandard_sequence[] = {
|
||||
{ &hf_h283_t35CountryCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_255 },
|
||||
{ &hf_h283_t35Extension , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_255 },
|
||||
{ &hf_h283_manufacturerCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_65535 },
|
||||
{ NULL, 0, 0, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_H221NonStandard(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_H221NonStandard, H221NonStandard_sequence);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
dissect_h283_OBJECT_IDENTIFIER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const value_string h283_NonStandardIdentifier_vals[] = {
|
||||
{ 0, "object" },
|
||||
{ 1, "h221NonStandard" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
static const per_choice_t NonStandardIdentifier_choice[] = {
|
||||
{ 0, &hf_h283_object , ASN1_EXTENSION_ROOT , dissect_h283_OBJECT_IDENTIFIER },
|
||||
{ 1, &hf_h283_h221NonStandard, ASN1_EXTENSION_ROOT , dissect_h283_H221NonStandard },
|
||||
{ 0, NULL, 0, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_NonStandardIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_NonStandardIdentifier, NonStandardIdentifier_choice,
|
||||
NULL);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
dissect_h283_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
|
||||
NO_BOUND, NO_BOUND, FALSE, NULL);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const per_sequence_t NonStandardParameter_sequence[] = {
|
||||
{ &hf_h283_nonStandardIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_NonStandardIdentifier },
|
||||
{ &hf_h283_data , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_OCTET_STRING },
|
||||
{ NULL, 0, 0, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_NonStandardParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_NonStandardParameter, NonStandardParameter_sequence);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const per_sequence_t MTAddress_sequence[] = {
|
||||
{ &hf_h283_mAddress , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_65535 },
|
||||
{ &hf_h283_tAddress , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_65535 },
|
||||
{ NULL, 0, 0, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_MTAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_MTAddress, MTAddress_sequence);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
dissect_h283_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
|
||||
0U, 4294967295U, NULL, FALSE);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
dissect_h283_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
dissect_h283_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const value_string h283_LCTRequest_vals[] = {
|
||||
{ 0, "announceReq" },
|
||||
{ 1, "deviceListReq" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
static const per_choice_t LCTRequest_choice[] = {
|
||||
{ 0, &hf_h283_announceReq , ASN1_EXTENSION_ROOT , dissect_h283_NULL },
|
||||
{ 1, &hf_h283_deviceListReq , ASN1_EXTENSION_ROOT , dissect_h283_NULL },
|
||||
{ 0, NULL, 0, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_LCTRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
#line 58 "h283.cnf"
|
||||
gint32 msg_type = -1;
|
||||
const gchar *p = NULL;
|
||||
|
||||
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_LCTRequest, LCTRequest_choice,
|
||||
&msg_type);
|
||||
|
||||
#line 61 "h283.cnf"
|
||||
p = match_strval(msg_type, VALS(h283_LCTRequest_vals));
|
||||
if (!info_is_set && p && check_col(actx->pinfo->cinfo, COL_INFO)) {
|
||||
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "LCTRequest/%s", p);
|
||||
info_is_set = TRUE;
|
||||
}
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
dissect_h283_T_deviceListResp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
#line 105 "h283.cnf"
|
||||
tvbuff_t *next_tvb = NULL;
|
||||
|
||||
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
|
||||
NO_BOUND, NO_BOUND, FALSE, &next_tvb);
|
||||
|
||||
if (next_tvb && tvb_length(next_tvb)) {
|
||||
call_dissector((rdc_device_list_handle)?rdc_device_list_handle:data_handle, next_tvb, actx->pinfo, tree);
|
||||
}
|
||||
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const value_string h283_LCTResponse_vals[] = {
|
||||
{ 0, "announceResp" },
|
||||
{ 1, "deviceListResp" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
static const per_choice_t LCTResponse_choice[] = {
|
||||
{ 0, &hf_h283_announceResp , ASN1_EXTENSION_ROOT , dissect_h283_NULL },
|
||||
{ 1, &hf_h283_deviceListResp , ASN1_EXTENSION_ROOT , dissect_h283_T_deviceListResp },
|
||||
{ 0, NULL, 0, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_LCTResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
#line 71 "h283.cnf"
|
||||
gint32 msg_type = -1;
|
||||
const gchar *p = NULL;
|
||||
|
||||
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_LCTResponse, LCTResponse_choice,
|
||||
&msg_type);
|
||||
|
||||
#line 74 "h283.cnf"
|
||||
p = match_strval(msg_type, VALS(h283_LCTResponse_vals));
|
||||
if (!info_is_set && p && check_col(actx->pinfo->cinfo, COL_INFO)) {
|
||||
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "LCTResponse/%s", p);
|
||||
info_is_set = TRUE;
|
||||
}
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const value_string h283_LCTIndication_vals[] = {
|
||||
{ 0, "deviceChange" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
static const per_choice_t LCTIndication_choice[] = {
|
||||
{ 0, &hf_h283_deviceChange , ASN1_EXTENSION_ROOT , dissect_h283_NULL },
|
||||
{ 0, NULL, 0, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_LCTIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
#line 84 "h283.cnf"
|
||||
gint32 msg_type = -1;
|
||||
const gchar *p = NULL;
|
||||
|
||||
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_LCTIndication, LCTIndication_choice,
|
||||
&msg_type);
|
||||
|
||||
#line 87 "h283.cnf"
|
||||
p = match_strval(msg_type, VALS(h283_LCTIndication_vals));
|
||||
if (!info_is_set && p && check_col(actx->pinfo->cinfo, COL_INFO)) {
|
||||
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "LCTIndication/%s", p);
|
||||
info_is_set = TRUE;
|
||||
}
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const per_sequence_t SEQUENCE_OF_NonStandardParameter_sequence_of[1] = {
|
||||
{ &hf_h283_nonStandardParameters_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h283_NonStandardParameter },
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_SEQUENCE_OF_NonStandardParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_SEQUENCE_OF_NonStandardParameter, SEQUENCE_OF_NonStandardParameter_sequence_of);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const per_sequence_t NonStandardMessage_sequence[] = {
|
||||
{ &hf_h283_nonStandardParameters, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h283_SEQUENCE_OF_NonStandardParameter },
|
||||
{ NULL, 0, 0, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_NonStandardMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_NonStandardMessage, NonStandardMessage_sequence);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const value_string h283_LCTMessage_vals[] = {
|
||||
{ 0, "lctRequest" },
|
||||
{ 1, "lctResponse" },
|
||||
{ 2, "lctIndication" },
|
||||
{ 3, "nonStandardMessage" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
static const per_choice_t LCTMessage_choice[] = {
|
||||
{ 0, &hf_h283_lctRequest , ASN1_EXTENSION_ROOT , dissect_h283_LCTRequest },
|
||||
{ 1, &hf_h283_lctResponse , ASN1_EXTENSION_ROOT , dissect_h283_LCTResponse },
|
||||
{ 2, &hf_h283_lctIndication , ASN1_EXTENSION_ROOT , dissect_h283_LCTIndication },
|
||||
{ 3, &hf_h283_nonStandardMessage, ASN1_EXTENSION_ROOT , dissect_h283_NonStandardMessage },
|
||||
{ 0, NULL, 0, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_LCTMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
#line 45 "h283.cnf"
|
||||
gint32 msg_type = -1;
|
||||
const gchar *p = NULL;
|
||||
|
||||
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_LCTMessage, LCTMessage_choice,
|
||||
&msg_type);
|
||||
|
||||
#line 48 "h283.cnf"
|
||||
p = match_strval(msg_type, VALS(h283_LCTMessage_vals));
|
||||
if (!info_is_set && p && check_col(actx->pinfo->cinfo, COL_INFO)) {
|
||||
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "LCTMessage/%s", p);
|
||||
info_is_set = TRUE;
|
||||
}
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
dissect_h283_T_rdcPDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
#line 95 "h283.cnf"
|
||||
tvbuff_t *next_tvb = NULL;
|
||||
|
||||
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
|
||||
NO_BOUND, NO_BOUND, FALSE, &next_tvb);
|
||||
|
||||
if (next_tvb && tvb_length(next_tvb)) {
|
||||
call_dissector((rdc_pdu_handle)?rdc_pdu_handle:data_handle, next_tvb, actx->pinfo, proto_tree_get_root(tree));
|
||||
}
|
||||
info_is_set = TRUE;
|
||||
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const value_string h283_T_dataType_vals[] = {
|
||||
{ 0, "lctMessage" },
|
||||
{ 1, "rdcPDU" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
static const per_choice_t T_dataType_choice[] = {
|
||||
{ 0, &hf_h283_lctMessage , ASN1_NO_EXTENSIONS , dissect_h283_LCTMessage },
|
||||
{ 1, &hf_h283_rdcPDU , ASN1_NO_EXTENSIONS , dissect_h283_T_rdcPDU },
|
||||
{ 0, NULL, 0, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_T_dataType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
#line 32 "h283.cnf"
|
||||
gint32 data_type = -1;
|
||||
const gchar *p = NULL;
|
||||
|
||||
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_T_dataType, T_dataType_choice,
|
||||
&data_type);
|
||||
|
||||
#line 35 "h283.cnf"
|
||||
p = match_strval(data_type, VALS(h283_T_dataType_vals));
|
||||
if (!info_is_set && p && check_col(actx->pinfo->cinfo, COL_INFO)) {
|
||||
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "RDCData/%s", p);
|
||||
info_is_set = TRUE;
|
||||
}
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const per_sequence_t RDCData_sequence[] = {
|
||||
{ &hf_h283_reliable , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_BOOLEAN },
|
||||
{ &hf_h283_dataType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_T_dataType },
|
||||
{ NULL, 0, 0, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_RDCData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_RDCData, RDCData_sequence);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const value_string h283_T_pduType_vals[] = {
|
||||
{ 0, "ack" },
|
||||
{ 1, "rdcData" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
static const per_choice_t T_pduType_choice[] = {
|
||||
{ 0, &hf_h283_ack , ASN1_NO_EXTENSIONS , dissect_h283_NULL },
|
||||
{ 1, &hf_h283_rdcData , ASN1_NO_EXTENSIONS , dissect_h283_RDCData },
|
||||
{ 0, NULL, 0, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_T_pduType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
#line 19 "h283.cnf"
|
||||
gint32 pdu_type = -1;
|
||||
const gchar *p = NULL;
|
||||
|
||||
offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_T_pduType, T_pduType_choice,
|
||||
&pdu_type);
|
||||
|
||||
#line 22 "h283.cnf"
|
||||
p = match_strval(pdu_type, VALS(h283_T_pduType_vals));
|
||||
if (!info_is_set && p && check_col(actx->pinfo->cinfo, COL_INFO)) {
|
||||
col_set_str(actx->pinfo->cinfo, COL_INFO, p);
|
||||
info_is_set = TRUE;
|
||||
}
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static const per_sequence_t LCTPDU_sequence[] = {
|
||||
{ &hf_h283_srcAddr , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_MTAddress },
|
||||
{ &hf_h283_dstAddr , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_MTAddress },
|
||||
{ &hf_h283_timestamp , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_4294967295 },
|
||||
{ &hf_h283_seqNumber , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_INTEGER_0_65535 },
|
||||
{ &hf_h283_pduType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h283_T_pduType },
|
||||
{ &hf_h283_nonStandardParameters, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h283_SEQUENCE_OF_NonStandardParameter },
|
||||
{ NULL, 0, 0, NULL }
|
||||
};
|
||||
|
||||
static int
|
||||
dissect_h283_LCTPDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
|
||||
offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
|
||||
ett_h283_LCTPDU, LCTPDU_sequence);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
/*--- PDUs ---*/
|
||||
|
||||
static int dissect_LCTPDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
|
||||
int offset = 0;
|
||||
asn1_ctx_t asn1_ctx;
|
||||
asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
|
||||
offset = dissect_h283_LCTPDU(tvb, offset, &asn1_ctx, tree, hf_h283_LCTPDU_PDU);
|
||||
offset += 7; offset >>= 3;
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
/*--- End of included file: packet-h283-fn.c ---*/
|
||||
#line 65 "packet-h283-template.c"
|
||||
|
||||
static int
|
||||
dissect_h283_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
proto_item *ti = NULL;
|
||||
proto_tree *h283_tree = NULL;
|
||||
|
||||
if (check_col(pinfo->cinfo, COL_PROTOCOL))
|
||||
col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
|
||||
|
||||
info_is_set = FALSE;
|
||||
|
||||
ti = proto_tree_add_item(tree, proto_h283, tvb, 0, -1, FALSE);
|
||||
h283_tree = proto_item_add_subtree(ti, ett_h283);
|
||||
|
||||
return dissect_LCTPDU_PDU(tvb, pinfo, h283_tree);
|
||||
}
|
||||
|
||||
/*--- proto_register_h283 ----------------------------------------------*/
|
||||
void proto_register_h283(void) {
|
||||
|
||||
/* List of fields */
|
||||
static hf_register_info hf[] = {
|
||||
|
||||
/*--- Included file: packet-h283-hfarr.c ---*/
|
||||
#line 1 "packet-h283-hfarr.c"
|
||||
{ &hf_h283_LCTPDU_PDU,
|
||||
{ "LCTPDU", "h283.LCTPDU",
|
||||
FT_NONE, BASE_NONE, NULL, 0,
|
||||
"h283.LCTPDU", HFILL }},
|
||||
{ &hf_h283_t35CountryCode,
|
||||
{ "t35CountryCode", "h283.t35CountryCode",
|
||||
FT_UINT32, BASE_DEC, NULL, 0,
|
||||
"h283.INTEGER_0_255", HFILL }},
|
||||
{ &hf_h283_t35Extension,
|
||||
{ "t35Extension", "h283.t35Extension",
|
||||
FT_UINT32, BASE_DEC, NULL, 0,
|
||||
"h283.INTEGER_0_255", HFILL }},
|
||||
{ &hf_h283_manufacturerCode,
|
||||
{ "manufacturerCode", "h283.manufacturerCode",
|
||||
FT_UINT32, BASE_DEC, NULL, 0,
|
||||
"h283.INTEGER_0_65535", HFILL }},
|
||||
{ &hf_h283_object,
|
||||
{ "object", "h283.object",
|
||||
FT_OID, BASE_NONE, NULL, 0,
|
||||
"h283.OBJECT_IDENTIFIER", HFILL }},
|
||||
{ &hf_h283_h221NonStandard,
|
||||
{ "h221NonStandard", "h283.h221NonStandard",
|
||||
FT_NONE, BASE_NONE, NULL, 0,
|
||||
"h283.H221NonStandard", HFILL }},
|
||||
{ &hf_h283_nonStandardIdentifier,
|
||||
{ "nonStandardIdentifier", "h283.nonStandardIdentifier",
|
||||
FT_UINT32, BASE_DEC, VALS(h283_NonStandardIdentifier_vals), 0,
|
||||
"h283.NonStandardIdentifier", HFILL }},
|
||||
{ &hf_h283_data,
|
||||
{ "data", "h283.data",
|
||||
FT_BYTES, BASE_HEX, NULL, 0,
|
||||
"h283.OCTET_STRING", HFILL }},
|
||||
{ &hf_h283_srcAddr,
|
||||
{ "srcAddr", "h283.srcAddr",
|
||||
FT_NONE, BASE_NONE, NULL, 0,
|
||||
"h283.MTAddress", HFILL }},
|
||||
{ &hf_h283_dstAddr,
|
||||
{ "dstAddr", "h283.dstAddr",
|
||||
FT_NONE, BASE_NONE, NULL, 0,
|
||||
"h283.MTAddress", HFILL }},
|
||||
{ &hf_h283_timestamp,
|
||||
{ "timestamp", "h283.timestamp",
|
||||
FT_UINT32, BASE_DEC, NULL, 0,
|
||||
"h283.INTEGER_0_4294967295", HFILL }},
|
||||
{ &hf_h283_seqNumber,
|
||||
{ "seqNumber", "h283.seqNumber",
|
||||
FT_UINT32, BASE_DEC, NULL, 0,
|
||||
"h283.INTEGER_0_65535", HFILL }},
|
||||
{ &hf_h283_pduType,
|
||||
{ "pduType", "h283.pduType",
|
||||
FT_UINT32, BASE_DEC, VALS(h283_T_pduType_vals), 0,
|
||||
"h283.T_pduType", HFILL }},
|
||||
{ &hf_h283_ack,
|
||||
{ "ack", "h283.ack",
|
||||
FT_NONE, BASE_NONE, NULL, 0,
|
||||
"h283.NULL", HFILL }},
|
||||
{ &hf_h283_rdcData,
|
||||
{ "rdcData", "h283.rdcData",
|
||||
FT_NONE, BASE_NONE, NULL, 0,
|
||||
"h283.RDCData", HFILL }},
|
||||
{ &hf_h283_nonStandardParameters,
|
||||
{ "nonStandardParameters", "h283.nonStandardParameters",
|
||||
FT_UINT32, BASE_DEC, NULL, 0,
|
||||
"h283.SEQUENCE_OF_NonStandardParameter", HFILL }},
|
||||
{ &hf_h283_nonStandardParameters_item,
|
||||
{ "Item", "h283.nonStandardParameters_item",
|
||||
FT_NONE, BASE_NONE, NULL, 0,
|
||||
"h283.NonStandardParameter", HFILL }},
|
||||
{ &hf_h283_mAddress,
|
||||
{ "mAddress", "h283.mAddress",
|
||||
FT_UINT32, BASE_DEC, NULL, 0,
|
||||
"h283.INTEGER_0_65535", HFILL }},
|
||||
{ &hf_h283_tAddress,
|
||||
{ "tAddress", "h283.tAddress",
|
||||
FT_UINT32, BASE_DEC, NULL, 0,
|
||||
"h283.INTEGER_0_65535", HFILL }},
|
||||
{ &hf_h283_reliable,
|
||||
{ "reliable", "h283.reliable",
|
||||
FT_BOOLEAN, 8, NULL, 0,
|
||||
"h283.BOOLEAN", HFILL }},
|
||||
{ &hf_h283_dataType,
|
||||
{ "dataType", "h283.dataType",
|
||||
FT_UINT32, BASE_DEC, VALS(h283_T_dataType_vals), 0,
|
||||
"h283.T_dataType", HFILL }},
|
||||
{ &hf_h283_lctMessage,
|
||||
{ "lctMessage", "h283.lctMessage",
|
||||
FT_UINT32, BASE_DEC, VALS(h283_LCTMessage_vals), 0,
|
||||
"h283.LCTMessage", HFILL }},
|
||||
{ &hf_h283_rdcPDU,
|
||||
{ "rdcPDU", "h283.rdcPDU",
|
||||
FT_UINT32, BASE_DEC, NULL, 0,
|
||||
"h283.T_rdcPDU", HFILL }},
|
||||
{ &hf_h283_lctRequest,
|
||||
{ "lctRequest", "h283.lctRequest",
|
||||
FT_UINT32, BASE_DEC, VALS(h283_LCTRequest_vals), 0,
|
||||
"h283.LCTRequest", HFILL }},
|
||||
{ &hf_h283_lctResponse,
|
||||
{ "lctResponse", "h283.lctResponse",
|
||||
FT_UINT32, BASE_DEC, VALS(h283_LCTResponse_vals), 0,
|
||||
"h283.LCTResponse", HFILL }},
|
||||
{ &hf_h283_lctIndication,
|
||||
{ "lctIndication", "h283.lctIndication",
|
||||
FT_UINT32, BASE_DEC, VALS(h283_LCTIndication_vals), 0,
|
||||
"h283.LCTIndication", HFILL }},
|
||||
{ &hf_h283_nonStandardMessage,
|
||||
{ "nonStandardMessage", "h283.nonStandardMessage",
|
||||
FT_NONE, BASE_NONE, NULL, 0,
|
||||
"h283.NonStandardMessage", HFILL }},
|
||||
{ &hf_h283_announceReq,
|
||||
{ "announceReq", "h283.announceReq",
|
||||
FT_NONE, BASE_NONE, NULL, 0,
|
||||
"h283.NULL", HFILL }},
|
||||
{ &hf_h283_deviceListReq,
|
||||
{ "deviceListReq", "h283.deviceListReq",
|
||||
FT_NONE, BASE_NONE, NULL, 0,
|
||||
"h283.NULL", HFILL }},
|
||||
{ &hf_h283_announceResp,
|
||||
{ "announceResp", "h283.announceResp",
|
||||
FT_NONE, BASE_NONE, NULL, 0,
|
||||
"h283.NULL", HFILL }},
|
||||
{ &hf_h283_deviceListResp,
|
||||
{ "deviceListResp", "h283.deviceListResp",
|
||||
FT_UINT32, BASE_DEC, NULL, 0,
|
||||
"h283.T_deviceListResp", HFILL }},
|
||||
{ &hf_h283_deviceChange,
|
||||
{ "deviceChange", "h283.deviceChange",
|
||||
FT_NONE, BASE_NONE, NULL, 0,
|
||||
"h283.NULL", HFILL }},
|
||||
|
||||
/*--- End of included file: packet-h283-hfarr.c ---*/
|
||||
#line 89 "packet-h283-template.c"
|
||||
};
|
||||
|
||||
/* List of subtrees */
|
||||
static gint *ett[] = {
|
||||
&ett_h283,
|
||||
|
||||
/*--- Included file: packet-h283-ettarr.c ---*/
|
||||
#line 1 "packet-h283-ettarr.c"
|
||||
&ett_h283_H221NonStandard,
|
||||
&ett_h283_NonStandardIdentifier,
|
||||
&ett_h283_NonStandardParameter,
|
||||
&ett_h283_LCTPDU,
|
||||
&ett_h283_T_pduType,
|
||||
&ett_h283_SEQUENCE_OF_NonStandardParameter,
|
||||
&ett_h283_MTAddress,
|
||||
&ett_h283_RDCData,
|
||||
&ett_h283_T_dataType,
|
||||
&ett_h283_LCTMessage,
|
||||
&ett_h283_LCTRequest,
|
||||
&ett_h283_LCTResponse,
|
||||
&ett_h283_LCTIndication,
|
||||
&ett_h283_NonStandardMessage,
|
||||
|
||||
/*--- End of included file: packet-h283-ettarr.c ---*/
|
||||
#line 95 "packet-h283-template.c"
|
||||
};
|
||||
|
||||
/* Register protocol */
|
||||
proto_h283 = proto_register_protocol(PNAME, PSNAME, PFNAME);
|
||||
|
||||
/* Register fields and subtrees */
|
||||
proto_register_field_array(proto_h283, hf, array_length(hf));
|
||||
proto_register_subtree_array(ett, array_length(ett));
|
||||
|
||||
register_dissector(PFNAME, dissect_h283_udp, proto_h283);
|
||||
h283_udp_handle = find_dissector(PFNAME);
|
||||
|
||||
}
|
||||
|
||||
/*--- proto_reg_handoff_h283 -------------------------------------------*/
|
||||
void proto_reg_handoff_h283(void)
|
||||
{
|
||||
|
||||
dissector_add_handle("udp.port", h283_udp_handle);
|
||||
|
||||
rdc_pdu_handle = find_dissector("rdc");
|
||||
rdc_device_list_handle = find_dissector("rdc.device_list");
|
||||
data_handle = find_dissector("data");
|
||||
}
|
||||
|
Loading…
Reference in New Issue