-
Notifications
You must be signed in to change notification settings - Fork 1
/
CsmpTLVsPublic.proto
1626 lines (1492 loc) · 45.7 KB
/
CsmpTLVsPublic.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
syntax = "proto3";
/*
The definitions for CSMP TLVs.
This file is directly consumable by the Protocol Buffer tool chain.
Requirements are specified using the terminology and conventions as referenced in [RFC2119].
Requirements key words referenced in [RFC2119] must be capitalized.
Full details re: Protocol Buffers are accessible at https://developers.google.com/protocol-buffers
*/
/*
CSMP TLV ID Mapping to Protocol Buffer messages.
A unique TLV ID MUST be assigned to each CSMP Protocol Buffer message (defined within).
An unused TLV ID MAY be assigned to a new message. The new TLV ID assignment MUST be recorded within, along with the defintion of the new message.
A Reserved TLV ID MUST NOT be assigned to a message.
An existing TLV ID assignment MUST NOT be re-assigned to a new message.
NOTE the legend.
- Unused: available for assignment.
- Reserved: not available for assignment.
- All other named messages are currently used by CSMP for generic and RF Mesh device management.
All TLV assignments MUST be recorded in the table below. Take care to maintain the numbering.
TLVID Message
1 TlvIndex
2 DeviceID
3 Reserved
4 Unused
5 Unused
6 NMSRedirectRequest
7 SessionID
8 DescriptionRequest
9 Unused
10 Reserved
11 HardwareDesc
12 InterfaceDesc
13 ReportSubscribe
14 Reserved
15 Reserved
16 IPAddress
17 IPRoute
18 CurrentTime
19 Reserved
20 Reserved
21 RPLSettings
22 Uptime
23 InterfaceMetrics
24 Reserved
25 IPRouteRPLMetrics
26 Unused
27-29 Reserved
30 PingRequest
31 PingResponse
32 RebootRequest
33 Ieee8021xStatus
34 Ieee80211iStatus
35 WPANStatus
36 DHCP6ClientStatus
37-41 Reserved
42 NMSSettings
43 NMSStatus
44-46 Reserved
47 Ieee8021xSettings
48 Ieee802154BeaconStats
49-52 Reserved
53 RPLInstance
54 Reserved
55 GroupAssign
56 GroupEvict
57 GroupMatch
58 GroupInfo
59 Unused
60 Unused
61 Reserved
62 LowpanMacStats
63 LowpanPhySettings
64 Unused
65 TransferRequest
66 Reserved
67 ImageBlock
68 LoadRequest
69 CancelLoadRequest
70 SetBackupRequest
71 TransferResponse
72 LoadResponse
73 CancelLoadResponse
74 SetBackupResponse
75 FirmwareImageInfo
76 SignatureValidity
77 Signature
78 Reserved
79 SignatureSettings
80 Reserved
81 Reserved
82 Unused
83 Unused
84 Reserved
85 Unused
86 SysResetStats
87 Unused
88 Reserved
89 Unused
90 Unused
91-97 Reserved
98 Unused
99 Unused
100 Reserved
101 Unused
102 Unused
103 Unused
104 Unused
105 Unused
106 Unused
107 Reserved
108 Reserved
109 Unused
110-112 Reserved
113 Unused
114 Unused
115-117 Reserved
118 Unused
119 Unused
120-122 Reserved
123 Unused
124 NetStat
125 Reserved
126 Reserved
127 Vendor Defined TLV
128-131 Reserved
132-139 Unused
140 Reserved
141 NetworkRole
142-151 Reserved
152-154 Unused
155-157 Reserved
158-159 Unused
160-165 Reserved
166-169 Unused
170-171 Reserved
172 CertBundle
173-179 Unused
180 Reserved
181-199 Unused
200-202 Reserved
203-209 Unused
210 Reserved
211 Reserved
212-216 Unused
217-220 Reserved
221-239 Unused
240 Reserved
241 MplStats
242 MplReset
243-299 Unused
301-303 Reserved
304 Unused
305-307 Reserved
308-309 Unused
310-312 Reserved
313 RPLStats
314 DHCP6Stats
315 Reserved
316 Reserved
317-324 Unused
325-337 Reserved
338-339 Unused
340-399 Reserved
400-499 Unused
500 Reserved
501 Reserved
502 Reserved
503-509 Unused
510 Reserved
511 Reserved
512-519 Unused
520 Reserved
521 Reserved
522-529 Unused
530 Reserved
531 Reserved
532-539 Unused
540 Reserved
541-599 Unused
600-607 Reserved
608 ... Unused
*/
/*
Message definitions follow.
Tag notation used within ...
Class:: designates class of device for which the TLV is relevant.
Generic (any IP addressable device)
Mesh (Wi-SUN mesh devices)
Others TBD.
*/
package csmp.tlvs;
option java_package = "com.cisco.cgms.protocols.csmp.tlvs";
// TLV 1
// A list of zero or more TLV IDs
// Class:: Generic
//
message TlvIndex {
repeated string tlvid = 1; // list of TLV IDs (string encoded) supported by the device.
}
// TLV 2
// Primary identifier for a specific device.
// Class:: Generic
//
message DeviceID {
oneof type_present {
uint32 type = 1; // Set to 1 to indicate EUI-64 format.
}
oneof id_present {
string id = 2; // The unique identifier of the device in EUI-64 format
}
}
// TLV 6
// Used by NMS to force a device to intitiate registration to a specific NMS.
// Class:: Generic
//
message NMSRedirectRequest {
oneof url_present {
string url = 1; // NMS <base-url> to which the device registration will be directed. MUST be formatted per section 6 of RFC 7252.
}
oneof immediate_present {
bool immediate = 2; // True == device should immediately send registration request to the specificed NMS url.
}
}
// TLV 7
// Session ID used by NMS to track device CSMP messaging.
// Assigned by the NMS, and used in all subsequent Device to NMS messaging.
// Class:: Generic
//
message SessionID {
oneof id_present {
string id = 1; // session ID
}
}
// TLV 8
// List of zero or more TLVs requested by the NMS from a Device.
// The values of the requested TLVs will be sent to the NMS asynchronously.
// Class:: Generic
//
message DescriptionRequest {
repeated string tlvid = 1; // list of TLV IDs in string format.
}
// A list of hardware modules with their firmware versions.
//
message HardwareModule {
oneof moduleType_present {
uint32 moduleType = 1; // hardware module type. Rf Dsp=1, PLC Dsp=2, CPU=3, FPGA=4
}
oneof firmwareRev_present {
string firmwareRev = 2; // firmware version of the hardware module
}
}
// TLV 11
// This TLV contains hardware description information for the device.
// The contents of the fields are defined by the equivalently-named fields in the entry of the SNMP MIB object entPhysicalTable.
// Class:: Generic
//
message HardwareDesc {
oneof entPhysicalIndex_present {
int32 entPhysicalIndex = 1; // index of this hardware being described
}
oneof entPhysicalDescr_present {
string entPhysicalDescr = 2; // A textual description of physical entity
}
oneof entPhysicalVendorType_present {
bytes entPhysicalVendorType = 3; // An indication of the vendor-specific hardware type of the physical entity
}
oneof entPhysicalContainedIn_present {
int32 entPhysicalContainedIn = 4; // The value of entPhysicalIndex for the physical entity which 'contains' this physical entity
}
oneof entPhysicalClass_present {
int32 entPhysicalClass = 5; // An indication of the general hardware type of the physical entity
}
oneof entPhysicalParentRelPos_present {
int32 entPhysicalParentRelPos = 6; // An indication of the relative position of this 'child' component among all its 'sibling' components
}
oneof entPhysicalName_present {
string entPhysicalName = 7; // The textual name of the physical entity
}
oneof entPhysicalHardwareRev_present {
string entPhysicalHardwareRev = 8; // The vendor-specific hardware revision string for the physical entity
}
oneof entPhysicalFirmwareRev_present {
string entPhysicalFirmwareRev = 9; // The vendor-specific firmware revision string for the physical entity
}
oneof entPhysicalSoftwareRev_present {
string entPhysicalSoftwareRev = 10; // The vendor-specific software revision string for the physical entity
}
oneof entPhysicalSerialNum_present {
string entPhysicalSerialNum = 11; // The vendor-specific serial number string for the physical entity
}
oneof entPhysicalMfgName_present {
string entPhysicalMfgName = 12; // The name of the manufacturer of this physical component
}
oneof entPhysicalModelName_present {
string entPhysicalModelName = 13; // The vendor-specific model name identifier string associated with this physical component
}
oneof entPhysicalAssetID_present {
string entPhysicalAssetID = 14; // This object is a user-assigned asset tracking identifier for the physical entity and provides non-volatile storage of this information
}
oneof entPhysicalMfgDate_present {
uint32 entPhysicalMfgDate = 15; // This object contains the date of manufacturing of the managed entity
}
oneof entPhysicalURIs_present {
string entPhysicalURIs = 16; // This object contains additional identification information about the physical entity
}
oneof entPhysicalFunction_present {
uint32 entPhysicalFunction = 17; // The �entPhysicalFunction� field can take the following values: METER = 1, RANGE_EXTENDER = 2, DA_GATEWAY = 3, CGE = 4, ROOT = 5, CONTROLLER = 6, SENSOR. = 7, NETWORKNODE = 8
}
oneof entPhysicalOUI_present {
bytes entPhysicalOUI = 18; // uniquely identifies a vendor
}
repeated HardwareModule hwModule = 19; // This defines a list of hardware modules with their firmware versions
}
// TLV 12
// This TLV contains description information for an interface on the device.
// The contents of these fields are defined by the equivalently-named fields in the SNMP MIB object ifTable
// Class:: Generic
//
message InterfaceDesc {
oneof ifIndex_present {
int32 ifIndex = 1; // A unique value, greater than zero, for each interface
}
oneof ifName_present {
string ifName = 2; // The textual name of the interface
}
oneof ifDescr_present {
string ifDescr = 3; // A textual string containing information about the interface
}
oneof ifType_present {
int32 ifType = 4; // The type of interface
}
oneof ifMtu_present {
int32 ifMtu = 5; // The size of the largest packet which can be sent/received on the interface, specified in octets
}
oneof ifPhysAddress_present {
bytes ifPhysAddress = 6; // The interface's address at its protocol sub-layer
}
}
// TLV 13
// This TLV specifies the periodic reporting of a set of TLVs.
// Class:: Generic
//
message ReportSubscribe {
oneof interval_present {
uint32 interval = 1; // The periodic time interval (in seconds) at which the device sends the tlvid set of tlvs.
}
repeated string tlvid = 2; // The tlvs to be sent on the interval.
oneof intervalHeartBeat_present {
uint32 intervalHeartBeat = 3; // The periodic time interval at which the device sends the tlvidHeartBeat set of tlvs.
}
repeated string tlvidHeartBeat = 4; // The tlvs to be sent on the heartbeat interval.
}
// TLV 16
// Describes a particular IP address (identified by the index) attached to an interface.
// Class:: Generic
//
message IPAddress {
oneof ipAddressIndex_present {
int32 ipAddressIndex = 1; // A unique value, greater than zero, for each IP address
}
oneof ipAddressAddrType_present {
uint32 ipAddressAddrType = 2; // Address type defined as integers : ipv4=1, ipvv6=2, ipv4z=3, ipv6z=4, ipv6am=5
}
oneof ipAddressAddr_present {
bytes ipAddressAddr = 3; // The IP address
}
oneof ipAddressIfIndex_present {
int32 ipAddressIfIndex = 4; // Index of the associated interface
}
oneof ipAddressType_present {
uint32 ipAddressType = 5; // IP type defined as integers : unicast=1, anycast=2, broadcast=3
}
oneof ipAddressOrigin_present {
uint32 ipAddressOrigin = 6; // Address origin defined as integers : other=1, manual=2, dhcp=4, linklayer=5, random=6
}
oneof ipAddressStatus_present {
uint32 ipAddressStatus = 7; // status defined as integers : preferred=1, deprecated=2, invalid=3, inaccessible=4, unknown=5, tentative=6, duplicate=7, optimistic=8
}
reserved 8; // oneof ipAddressCreated
reserved 9; // oneof ipAddressLastChanged
oneof ipAddressPfxLen_present {
uint32 ipAddressPfxLen = 10; // The prefix length associated with the IP address.
}
}
// TLV 17
// Describes a particular IP route (identified by the index) attached to an interface.
// Class:: Generic
//
message IPRoute {
oneof inetCidrRouteIndex_present {
int32 inetCidrRouteIndex = 1; // A unique value, greater than zero, for each route
}
oneof inetCidrRouteDestType_present {
uint32 inetCidrRouteDestType = 2; // Destination Addresss type defined as integers : ipv4=1, ipvv6=2, ipv4z=3, ipv6z=4, ipv6am=5
}
oneof inetCidrRouteDest_present {
bytes inetCidrRouteDest = 3; // IP address of the destination of the route
}
oneof inetCidrRoutePfxLen_present {
uint32 inetCidrRoutePfxLen = 4; // Associated prefix length of the route destination
}
oneof inetCidrRouteNextHopType_present {
uint32 inetCidrRouteNextHopType = 5; // Next hop Addresss type defined as integers : ipv4=1, ipvv6=2, ipv4z=3, ipv6z=4, ipv6am=5
}
oneof inetCidrRouteNextHop_present {
bytes inetCidrRouteNextHop = 6; // IP address of the next hop of the route (device parent).
}
oneof inetCidrRouteIfIndex_present {
int32 inetCidrRouteIfIndex = 7; // Index of the associated interface
}
reserved 8; // oneof inetCidrRouteType
reserved 9; // oneof inetCidrRouteProto
reserved 10; // oneof inetCidrRouteAge
}
// TLV 18
// Contains the current time as maintainced on the device.
// For time stamping purposes, this tlvid MUST also be sent along with every periodic metric report.
// It MAY contain a POSIX timestamp or an ISO 8601 timestamp.
// Class:: Generic
//
message CurrentTime {
oneof posix_present {
uint32 posix = 1; // posix timestamp
}
oneof iso8601_present {
string iso8601 = 2; // iso 8601 timestamp
}
oneof source_present {
uint32 source = 3; // time service from. 1: local; 2: admin; 3: network
}
}
// TLV 21
// For retrieving the RPL Settings on the device.
// Class:: Mesh
//
message RPLSettings {
oneof ifIndex_present {
int32 ifIndex = 1; // interface id
}
oneof enabled_present {
bool enabled = 2; // whether RPL feature is enabled
}
oneof dioIntervalMin_present {
uint32 dioIntervalMin = 3; // min interval of DIO trickle timer in milliseconds
}
oneof dioIntervalMax_present {
uint32 dioIntervalMax = 4; // max interval of DIO trickle timer in milliseconds
}
oneof daoIntervalMin_present {
uint32 daoIntervalMin = 5; // min interval of DAO trickle timer in milliseconds
}
oneof daoIntervalMax_present {
uint32 daoIntervalMax = 6; // max interval of DAO trickle timer in milliseconds
}
oneof mopType_present {
uint32 mopType = 7; // mode of operation for RPL. 1: non-storing mode; 2: storing mode
}
}
// TLV 22
// Contains the total system uptime of the device (seconds).
// Class:: Generic
//
message Uptime {
oneof sysUpTime_present {
uint32 sysUpTime = 1; // uptime info in seconds
}
}
// TLV 23
// The statistics of an interface
// Class:: Generic
//
message InterfaceMetrics {
oneof ifIndex_present {
int32 ifIndex = 1; // A unique value, greater than zero, for each interface. Is same as in InterfaceDesc�s ifIndex for the same interface
}
oneof ifInSpeed_present {
uint32 ifInSpeed = 2; // The speed at which the incoming packets are received on the interface
}
oneof ifOutSpeed_present {
uint32 ifOutSpeed = 3; // The speed at which the outgoing packets are transmitted on the interface
}
oneof ifAdminStatus_present {
uint32 ifAdminStatus = 4; // The desired state of the interface
}
oneof ifOperStatus_present {
uint32 ifOperStatus = 5; // The current operational state of the interface
}
oneof ifLastChange_present {
uint32 ifLastChange = 6; // The value of sysUpTime at the time the interface entered its current operational state
}
oneof ifInOctets_present {
uint32 ifInOctets = 7; // The total number of octets received on the interface, including framing characters
}
oneof ifOutOctets_present {
uint32 ifOutOctets = 8; // The total number of octets transmitted out of the interface, including framing characters
}
oneof ifInDiscards_present {
uint32 ifInDiscards = 9; // The number of inbound packets which were chosen to be discarded even though no errors had been detected to prevent their being deliverable to a higher-layer protocol (application dependant).
}
oneof ifInErrors_present {
uint32 ifInErrors = 10; // For packet-oriented interfaces, the number of inbound packets that contained errors preventing them from being deliverable to a higher-layer protocol (subset of ifInDiscards).
}
oneof ifOutDiscards_present {
uint32 ifOutDiscards = 11; // The number of outbound packets which were chosen to be discarded even though no errors had been detected to prevent their being transmitted
}
oneof ifOutErrors_present {
uint32 ifOutErrors = 12; // For packet-oriented interfaces, the number of outbound packets that could not be transmitted because of errors
}
}
// TLV 25
// Describes status of each RPL router
// Class:: Mesh
//
message IPRouteRPLMetrics {
oneof inetCidrRouteIndex_present {
int32 inetCidrRouteIndex = 1; // refers to a particular index in the IPRoute table
}
oneof instanceIndex_present {
int32 instanceIndex = 2; // Corresponding RPL instance of this route
}
oneof rank_present {
int32 rank = 3; // advertised rank
}
oneof hops_present {
int32 hops = 4; // not necessary now, but here so we can easily add later once we're propagating hops as a metric
}
oneof pathEtx_present {
int32 pathEtx = 5; // advertised path ethx
}
oneof linkEtx_present {
int32 linkEtx = 6; // next-hop link ETX
}
oneof rssiForward_present {
sint32 rssiForward = 7; // forward RSSI value (relative to the device)
}
oneof rssiReverse_present {
sint32 rssiReverse = 8; // reverse RSSI value (relative to the device)
}
oneof lqiForward_present {
int32 lqiForward = 9; // forward LQI value
}
oneof lqiReverse_present {
int32 lqiReverse = 10; // reverse LQI value
}
oneof dagSize_present {
uint32 dagSize = 11; // nodes count of this pan (number of joined devices)
}
reserved 12 to 17; // Used by Itron.
PhyModeInfo phyModeForward = 18; // forward phy mode value
PhyModeInfo phyModeReverse = 19; // reverse phy mode value
}
// TLV 30
// Requesting the device to perform a ping operation to a destination address.
// Class:: Generic
//
message PingRequest {
oneof dest_present {
string dest = 1; // IP address to be pinged from the device.
}
oneof count_present {
uint32 count = 2; // number of times to ping.
}
oneof delay_present {
uint32 delay = 3; // delay between ping in seconds.
}
}
// TLV 31
// Acquire the current status of the last PingRequest.
// Class:: Generic
//
message PingResponse {
oneof sent_present {
uint32 sent = 1; // number of packets sent
}
oneof received_present {
uint32 received = 2; // number of packets received
}
oneof minRtt_present {
uint32 minRtt = 3; // min round trip time
}
oneof meanRtt_present {
uint32 meanRtt = 4; // mean round trip time
}
oneof maxRtt_present {
uint32 maxRtt = 5; // max round trip time
}
oneof stdevRtt_present {
uint32 stdevRtt = 6; // standard deviation of the round trip time
}
oneof src_present {
string src = 7; // source IP address for the ping
}
}
// TLV 32
// Request a device to reboot.
// Class:: Generic
//
message RebootRequest {
oneof flag_present {
uint32 flag = 1; // 0 : reboot and transfer to designated running image; 1 : reboot and stop at bootloader CLI.
}
}
// TLV 33
// 802.1x status
// Class:: Mesh
//
message Ieee8021xStatus {
oneof ifIndex_present {
int32 ifIndex = 1; // It is RECOMMENDED this be set to 2 for the 6LowPAN interface.
}
oneof enabled_present {
bool enabled = 2; // 802.1x enabled or not?
}
oneof identity_present {
string identity = 3; // subject name of certificate, max len 32
}
oneof state_present {
uint32 state = 4; // state of tls handshake
}
oneof pmKId_present {
bytes pmkId = 5; // hash value of pmk, len 16
}
oneof clientCertValid_present {
bool clientCertValid = 6; // whether client cert is valid
}
oneof caCertValid_present {
bool caCertValid = 7; // whether ca cert is valid
}
oneof privateKeyValid_present {
bool privateKeyValid = 8; // whether private key of client cert is valid
}
oneof rlyPanid_present {
uint32 rlyPanid = 9; // panid of relay node
}
oneof rlyAddress_present {
bytes rlyAddress = 10; // eui64 address of relay node, len 8
}
oneof rlyLastHeard_present {
uint32 rlyLastHeard = 11; // last heard from relay node in seconds
}
}
// TLV 34
// 802.11i status
// Class:: Mesh
//
message Ieee80211iStatus {
oneof ifIndex_present {
int32 ifIndex = 1; // It is RECOMMENDED this be set to 2 for the 6LowPAN interface.
}
oneof enabled_present {
bool enabled = 2; // 802.11i is eabled or not
}
oneof pmkId_present {
bytes pmkId = 3; // hash value of pmk, len 16
}
oneof ptkId_present {
bytes ptkId = 4; // hash value of ptk, len 16
}
oneof gtkIndex_present {
int32 gtkIndex = 5; // index of gtk
}
oneof gtkAllFresh_present {
bool gtkAllFresh = 6; // whether all gtk are fresh
}
repeated bytes gtkList = 7; // list of hash value for each gtk, hash len 8, max repeat 4
repeated uint32 gtkLifetimes = 8; // list of lifetime for each gtk, hash len 8, max repeat 4
oneof authAddress_present {
bytes authAddress = 9; // eui64 address of authenticate node
}
}
message PhyModeInfo {
oneof phyMode_present {
uint32 phyMode = 1; // phy operating mode value (as defined in section 5.2 of PHYWG Wi-SUN PHY Technical Specification - Amendment 1VA8)
}
oneof txPower_present {
int32 txPower = 2; // transmit power value in dbm.
}
}
// TLV 35
// Configuration of WPAN-specific interface settings
// Class:: Mesh
//
//
message WPANStatus {
oneof ifIndex_present {
int32 ifIndex = 1; // It is RECOMMENDED this be set to 2 for the 6LowPAN interface.
}
oneof SSID_present {
bytes SSID = 2; // max len 32 (Wi-SUN NetName).
}
oneof panid_present {
uint32 panid = 3;
}
reserved 4;
oneof dot1xEnabled_present {
bool dot1xEnabled = 5; // Is dot1x enabled?
}
oneof securityLevel_present {
uint32 securityLevel = 6; // security level
}
oneof rank_present {
uint32 rank = 7;
}
oneof beaconValid_present {
bool beaconValid = 8; // Is beacon valid (where invalid means receipt has timed-out/contact with PAN was lost)? (PC frame for Wi-SUN)
}
oneof beaconVersion_present {
uint32 beaconVersion = 9; // beacon version (Wi-SUN PAN version).
}
oneof beaconAge_present {
uint32 beaconAge = 10; // last heard beacon message in seconds (PC frame for Wi-SUN).
}
oneof txPower_present {
int32 txPower = 11; // transmit power value in dbm
}
oneof dagSize_present {
uint32 dagSize = 12; // count of nodes joined to this PAN
}
oneof metric_present {
uint32 metric = 13; // metric to border router (Wi-SUN Routing Cost)
}
oneof lastChanged_present {
uint32 lastChanged = 14; // seconds since last PAN change (PAN ID change).
}
oneof lastChangedReason_present {
uint32 lastChangedReason = 15; // reason for last PAN change: -1 == unknown, 0 == mesh initializing, 1 == mesh connectivity lost, 2 == GTK timeout, 3 == default route lost, 4 == migrated to better PAN, 5 == reserved.
}
oneof demoModeEnabled_present {
bool demoModeEnabled = 16; // Is demo mode enabled?
}
oneof txFec_present {
bool txFec = 17; // Is FEC enabled?
}
oneof phyMode_present {
uint32 phyMode = 18; // phy operating mode value (as defined in section 5.2 of PHYWG Wi-SUN PHY Technical Specification - Amendment 1VA8)
}
reserved 19;
repeated PhyModeInfo phyModeList = 20; // multi phy mode and transmit power value for adaptive modulation
}
// TLV 36
// Status of DHCP6 client
// Class:: Generic
//
message DHCP6ClientStatus {
oneof ifIndex_present {
int32 ifIndex = 1; // It is RECOMMENDED this be set to 2 for the 6LowPAN interface.
}
oneof ianaIAID_present {
uint32 ianaIAID = 2; // TA ID value
}
oneof ianaT1_present {
uint32 ianaT1 = 3; // T1 value
}
oneof ianaT2_present {
uint32 ianaT2 = 4; // T2 value
}
}
// TLV 42
// Configure device reporting settings.
// Class:: Generic
//
message NMSSettings {
oneof regIntervalMin_present {
uint32 regIntervalMin = 1; // min interval of register trickle timer in seconds
}
oneof regIntervalMax_present {
uint32 regIntervalMax = 2; // max interval of register trickle timer in seconds
}
// reserved = 3;
// reserved = 4;
// reserved = 5;
// reserved = 6;
}
// TLV 43
// Registration status to NMS.
// NMS uses this TLV to record the reason for the registration operation as recorded in the lastRegReason field of the TLV.
// Class:: Generic
//
message NMSStatus {
oneof registered_present {
bool registered = 1; // True of device is registerd with NMS
}
oneof NMSAddr_present {
bytes NMSAddr = 2; // IPv6 address of NMS
}
oneof NMSAddrOrigin_present {
uint32 NMSAddrOrigin = 3; // Mechanims used to get NMS's IPv6 address (fixed/DHCPv6/redirect by TLV6 ... values).
}
oneof lastReg_present {
uint32 lastReg = 4; // time since last succesful registration in seconds
}
oneof lastRegReason_present {
uint32 lastRegReason = 5; // reason for last registration. 1: coldstart 2: administrative 3: IP address changed 4: NMS changed 5: NMS redirect 6: NMS error 7: IDevID, LDevID, or NMS certificate changed 8: outage recovery.
}
oneof nextReg_present {
uint32 nextReg = 6; // time to next registration attempt in seconds.
}
oneof NMSCertValid_present {
bool NMSCertValid = 7; // True if NMS certificate is valid.
}
}
// TLV 47
// Device settings for 802.1x
// Class:: Mesh
//
message Ieee8021xSettings {
oneof ifIndex_present {
int32 ifIndex = 1; // It is RECOMMENDED this be set to 2 for the 6LowPAN interface.
}
oneof secMode_present {
uint32 secMode = 2; // security mode, non-security or security (Security Level from Aux Security Header of IEEE 802.15.4-2020)
}
oneof authIntervalMin_present {
uint32 authIntervalMin = 3; // min interval of 802.1x trickle timer in seconds
}
oneof authIntervalMax_present {
uint32 authIntervalMax = 4; // max interval of 802.1x trickle timer in seconds
}
oneof immediate_present {
bool immediate = 5; // True == do 802.1x authentication immediately, False == do 802.1x authentication at next authentication interval.
}
}
// TLV 48
// Statistic of 802.15.4 beacon packets
// Class:: Mesh
//
message Ieee802154BeaconStats {
oneof ifIndex_present {
int32 ifIndex = 1; // It is RECOMMENDED this be set to 2 for the 6LowPAN interface.
}
oneof inFrames_present {
uint32 inFrames = 10; // count for all received beacon
}
oneof inFramesBeaconPAS_present {
uint32 inFramesBeaconPAS = 11; // count for received PAS beacon
}
oneof inFramesBeaconPA_present {
uint32 inFramesBeaconPA = 12; // count for received PA beacon
}
oneof inFramesBeaconPCS_present {
uint32 inFramesBeaconPCS = 13; // count for received PCS beacon
}
oneof inFramesBeaconPC_present {
uint32 inFramesBeaconPC = 14; // count for received PC beacon
}
oneof outFrames_present {
uint32 outFrames = 20; // count for all sent out beacon
}
oneof outFramesBeaconPAS_present {
uint32 outFramesBeaconPAS = 21; // count for sent out PAS beacon
}
oneof outFramesBeaconPA_present {
uint32 outFramesBeaconPA = 22; // count for sent out PA beacon
}
oneof outFramesBeaconPCS_present {
uint32 outFramesBeaconPCS = 23; // count for sent out PCS beacon
}
oneof outFramesBeaconPC_present {
uint32 outFramesBeaconPC = 24; // count for sent out PC beacon
}
}
// TLV 53
// Indicates RPL instance information
// Class:: Mesh
//
message RPLInstance {
oneof instanceIndex_present {
int32 instanceIndex = 1; // index for instance
}
oneof instanceId_present {
int32 instanceId = 2; // instance id
}
oneof doDagId_present {
bytes doDagId = 3; // dodag id, len 16
}
oneof doDagVersionNumber_present {
int32 doDagVersionNumber = 4; // dodag version number of instance
}
oneof rank_present {
int32 rank = 5; // rank value
}
oneof parentCount_present {
int32 parentCount = 6; // Count of available parents (Wi-SUN candidate parent set).
}
oneof dagSize_present {
uint32 dagSize = 7; // nodes count of this dodag
}
repeated RPLParent parents = 8; // max repeat 3
repeated RPLParent candidates = 9; // max repeat 3
}
message RPLParent {
oneof parentIndex_present {
int32 parentIndex = 1; // this parent's index in the RPLParent table
}
oneof instanceIndex_present {
int32 instanceIndex = 2; // a particular index in the RPLInstance table that this parent underlies.
}
oneof routeIndex_present {
int32 routeIndex = 3; // a particular index in the IPRoute table that this parent underlies
}
oneof ipv6AddressLocal_present {
bytes ipv6AddressLocal = 4; // IPv6 linklocal address
}
oneof ipv6AddressGlobal_present {
bytes ipv6AddressGlobal = 5; // IPv6 global address
}
oneof doDagVersionNumber_present {
uint32 doDagVersionNumber = 6; // dodag version number if RPL parent
}
oneof pathEtx_present {
int32 pathEtx = 7; // the parent's ETX back to the root.
}
oneof linkEtx_present {
int32 linkEtx = 8; // the node's ETX to its next-hop
}
oneof rssiForward_present {
sint32 rssiForward = 9; // forward RSSI value
}
oneof rssiReverse_present {
sint32 rssiReverse = 10; // reverse RSSI value
}
oneof lqiForward_present {
int32 lqiForward = 11; // forward LQI value
}
oneof lqiReverse_present {
int32 lqiReverse = 12; // reverse LQI value
}
oneof hops_present {
int32 hops = 13; // parent's hop value