|
240 | 240 | 136: "FQDN", |
241 | 241 | 145: "UCI", |
242 | 242 | 161: "Max MBR/APN-AMBR (MMBR)", |
| 243 | + 163: "Additional Protocol Configuration Options", |
| 244 | + 170: "ULI Timestamp", |
243 | 245 | 172: "RAN/NAS Cause", |
244 | 246 | 197: "Extended Protocol Configuration Options", |
245 | 247 | 202: "UP Function Selection Indication Flags", |
@@ -444,6 +446,16 @@ class IE_ULI(gtp.IE_Base): |
444 | 446 | ] |
445 | 447 |
|
446 | 448 |
|
| 449 | +class IE_ULI_Timestamp(gtp.IE_Base): |
| 450 | + name = "IE ULI Timestamp" |
| 451 | + fields_desc = [ |
| 452 | + ByteEnumField("ietype", 170, IEType), |
| 453 | + ShortField("length", None), |
| 454 | + BitField("CR_flag", 0, 4), |
| 455 | + BitField("instance", 0, 4), |
| 456 | + XIntField("timestamp", 0)] |
| 457 | + |
| 458 | + |
447 | 459 | # 3GPP TS 29.274 v12.12.0 section 8.22 |
448 | 460 | INTERFACE_TYPES = { |
449 | 461 | 0: "S1-U eNodeB GTP-U interface", |
@@ -1291,6 +1303,19 @@ class IE_EPCO(gtp.IE_Base): |
1291 | 1303 | length_from=lambda pkt: pkt.length - 1)] |
1292 | 1304 |
|
1293 | 1305 |
|
| 1306 | +class IE_APCO(gtp.IE_Base): |
| 1307 | + name = "IE Additional Protocol Configuration Options" |
| 1308 | + fields_desc = [ByteEnumField("ietype", 163, IEType), |
| 1309 | + ShortField("length", None), |
| 1310 | + BitField("CR_flag", 0, 4), |
| 1311 | + BitField("instance", 0, 4), |
| 1312 | + BitField("extension", 0, 1), |
| 1313 | + BitField("SPARE", 0, 4), |
| 1314 | + BitField("PPP", 0, 3), |
| 1315 | + PacketListField("Protocols", None, PCO_protocol_dispatcher, |
| 1316 | + length_from=lambda pkt: pkt.length - 1)] |
| 1317 | + |
| 1318 | + |
1294 | 1319 | class IE_PAA(gtp.IE_Base): |
1295 | 1320 | name = "IE PAA" |
1296 | 1321 | fields_desc = [ByteEnumField("ietype", 79, IEType), |
@@ -1454,10 +1479,8 @@ class IE_PrivateExtension(gtp.IE_Base): |
1454 | 1479 | BitField("SPARE", 0, 4), |
1455 | 1480 | BitField("instance", 0, 4), |
1456 | 1481 | ShortEnumField("enterprisenum", None, IANA_ENTERPRISE_NUMBERS), |
1457 | | - ] |
1458 | | - |
1459 | | - def extract_padding(self, s): |
1460 | | - return s[:self.length], '' |
| 1482 | + StrLenField("proprietaryvalue", "", |
| 1483 | + length_from=lambda x: x.length - 2)] |
1461 | 1484 |
|
1462 | 1485 |
|
1463 | 1486 | ietypecls = {1: IE_IMSI, |
@@ -1493,6 +1516,8 @@ def extract_padding(self, s): |
1493 | 1516 | 136: IE_FQDN, |
1494 | 1517 | 145: IE_UCI, |
1495 | 1518 | 161: IE_MMBR, |
| 1519 | + 163: IE_APCO, |
| 1520 | + 170: IE_ULI_Timestamp, |
1496 | 1521 | 172: IE_Ran_Nas_Cause, |
1497 | 1522 | 197: IE_EPCO, |
1498 | 1523 | 202: IE_UPF_SelInd_Flags, |
|
0 commit comments