new H.282 (RDC) and H.283 (LCT) dissectors

svn path=/trunk/; revision=23339
This commit is contained in:
Tomas Kukosa 2007-11-02 12:18:01 +00:00
parent 475ec209ce
commit 686ea4b773
18 changed files with 8858 additions and 0 deletions

View File

@ -43,6 +43,8 @@ SUBDIRS = \
h235 \
h245 \
h248 \
h282 \
h283 \
h323 \
h450 \
h450-ros \

View File

@ -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

26
asn1/h282/Makefile.am Normal file
View File

@ -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

46
asn1/h282/Makefile.common Normal file
View File

@ -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 =

29
asn1/h282/Makefile.nmake Normal file
View File

@ -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

981
asn1/h282/RDC-PROTOCOL.asn Normal file
View File

@ -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

48
asn1/h282/h282.cnf Normal file
View File

@ -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

View File

@ -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)
{
}

View File

@ -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

26
asn1/h283/Makefile.am Normal file
View File

@ -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

46
asn1/h283/Makefile.common Normal file
View File

@ -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 =

29
asn1/h283/Makefile.nmake Normal file
View File

@ -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

117
asn1/h283/h283.cnf Normal file
View File

@ -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

View File

@ -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");
}

View File

@ -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

View File

@ -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

View File

@ -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");
}