Commit d2c80ff2 authored by Luke Mewburn's avatar Luke Mewburn
Browse files

oid.py: order labels and edges by OIDs

parent c8785757
Loading
Loading
Loading
Loading
Loading
+46 −46
Original line number Diff line number Diff line
@@ -6,76 +6,76 @@ graph TD;
0.4.0["etsi (0)"]
0.4.0.2["securityDomain (2)"]
0.4.0.3280["common-parameters (3280)"]
0.4.0.2.4["informationHandover (4)"]
0.4.0.2.2["lawfulIntercept (2)"]
0.4.0.2.3["retainedData (3)"]
0.4.0.2.4["informationHandover (4)"]
0.4.0.3280.261["version261 (261)"]
0.4.0.2.3.0["rdHeader (0)"]
0.4.0.2.2.1["hi2 (1)"]
0.4.0.2.2.0["hi1 (0)"]
0.4.0.2.4.0["ilhi (0)"]
0.4.0.2.2.1["hi2 (1)"]
0.4.0.2.2.5["li-ps (5)"]
0.4.0.2.2.5.6["pstnIsdn (6)"]
0.4.0.2.3.0["rdHeader (0)"]
0.4.0.2.4.0["ilhi (0)"]
0.4.0.2.2.0.1["notificationOperations (1)"]
0.4.0.2.2.1.18["version17 (18)"]
0.4.0.2.2.5.1["genHeader (1)"]
0.4.0.2.2.5.2["email (2)"]
0.4.0.2.2.5.3["iPAccess (3)"]
0.4.0.2.2.5.4["l2Access (4)"]
0.4.0.2.2.0.1["notificationOperations (1)"]
0.4.0.2.4.0.0["ilhiPdu (0)"]
0.4.0.2.3.0.33["version33 (33)"]
0.4.0.2.2.5.5["iPMultimedia (5)"]
0.4.0.2.2.1.18["version17 (18)"]
0.4.0.2.2.5.2["email (2)"]
0.4.0.2.2.5.1.40["version40 (40)"]
0.4.0.2.2.5.6["pstnIsdn (6)"]
0.4.0.2.3.0.33["version33 (33)"]
0.4.0.2.4.0.0["ilhiPdu (0)"]
0.4.0.2.2.0.1.7["version7 (7)"]
0.4.0.2.2.5.6.6["version6 (6)"]
0.4.0.2.2.5.3.20["version20 (20)"]
0.4.0.2.4.0.0.2["version2 (2)"]
0.4.0.2.2.5.1.40["version40 (40)"]
0.4.0.2.2.5.2.20["version20 (20)"]
0.4.0.2.2.5.5.17["version17 (17)"]
0.4.0.2.2.5.3.20["version20 (20)"]
0.4.0.2.2.5.4.10["version10 (10)"]
0.4.0.2.2.5.3-->0.4.0.2.2.5.3.20
0.4.0.2.2.5.5.17["version17 (17)"]
0.4.0.2.2.5.6.6["version6 (6)"]
0.4.0.2.4.0.0.2["version2 (2)"]
0-->0.4
0.4-->0.4.0
0.4.0-->0.4.0.2
0.4.0-->0.4.0.3280
0.4.0.2-->0.4.0.2.2
0.4.0.2-->0.4.0.2.3
0.4.0.2-->0.4.0.2.4
0.4.0.2.2-->0.4.0.2.2.0
0.4.0.2.2-->0.4.0.2.2.1
0.4.0.2.2.0.1-->0.4.0.2.2.0.1.7
0.4.0.2.2.5-->0.4.0.2.2.5.5
0.4.0.2.2.5.6-->0.4.0.2.2.5.6.6
0.4.0.2.2-->0.4.0.2.2.5
0.4.0.2-->0.4.0.2.3
0.4.0.2.4-->0.4.0.2.4.0
0.4.0.2.4.0-->0.4.0.2.4.0.0
0.4.0.2.2.5.1-->0.4.0.2.2.5.1.40
0.4.0.2.2.5-->0.4.0.2.2.5.2
0.4.0.2.2.5-->0.4.0.2.2.5.4
0.4.0.2.3.0-->0.4.0.2.3.0.33
0.4.0-->0.4.0.3280
0.4.0.2.2.5.4-->0.4.0.2.2.5.4.10
0.4.0.2.2.0-->0.4.0.2.2.0.1
0.4.0.2.2.0.1-->0.4.0.2.2.0.1.7
0.4.0.2.2.1-->0.4.0.2.2.1.18
0.4.0.2.2.5-->0.4.0.2.2.5.1
0.4.0.2.2.5-->0.4.0.2.2.5.2
0.4.0.2.2.5-->0.4.0.2.2.5.3
0.4.0.2.2-->0.4.0.2.2.0
0-->0.4
0.4.0.2.2.0-->0.4.0.2.2.0.1
0.4.0.2.2.5-->0.4.0.2.2.5.4
0.4.0.2.2.5-->0.4.0.2.2.5.5
0.4.0.2.2.5-->0.4.0.2.2.5.6
0.4.0.3280-->0.4.0.3280.261
0.4.0.2.2.5-->0.4.0.2.2.5.1
0.4.0.2.4.0.0-->0.4.0.2.4.0.0.2
0.4.0.2.2.5.5-->0.4.0.2.2.5.5.17
0.4.0.2.2.5.1-->0.4.0.2.2.5.1.40
0.4.0.2.2.5.2-->0.4.0.2.2.5.2.20
0.4.0-->0.4.0.2
0.4.0.2-->0.4.0.2.4
0.4.0.2.2.5.3-->0.4.0.2.2.5.3.20
0.4.0.2.2.5.4-->0.4.0.2.2.5.4.10
0.4.0.2.2.5.5-->0.4.0.2.2.5.5.17
0.4.0.2.2.5.6-->0.4.0.2.2.5.6.6
0.4.0.2.3-->0.4.0.2.3.0
0.4-->0.4.0
0.4.0.2-->0.4.0.2.2
0.4.0.2.3.0-->0.4.0.2.3.0.33
0.4.0.2.4-->0.4.0.2.4.0
0.4.0.2.4.0-->0.4.0.2.4.0.0
0.4.0.2.4.0.0-->0.4.0.2.4.0.0.2
0.4.0.3280-->0.4.0.3280.261
```
# OID list
| Spec | Module name | Version | OID relative to {itu-t(0) identified-organization(4) etsi(0)} |
| ---- | ----------- | ------- | -------- |
|[TS 102 232-1](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-1)|[HI1NotificationOperations](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-1/HI1NotificationOperations.asn?ref_type=heads)|7|securityDomain(2) lawfulIntercept(2) hi1(0) notificationOperations(1) version7(7)|
|[TS 102 232-1](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-1)|[HI2Operations](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-1/HI2Operations.asn?ref_type=heads)|18|securityDomain(2) lawfulIntercept(2) hi2(1) version17(18)|
|[TS 102 232-1](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-1)|[LI-PS-PDU](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-1/LI-PS-PDU.asn?ref_type=heads)|40|securityDomain(2) lawfulIntercept(2) li-ps(5) genHeader(1) version40(40)|
|[TS 102 232-2](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-2)|[EmailPDU](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-2/EmailPDU.asn?ref_type=heads)|20|securityDomain(2) lawfulIntercept(2) li-ps(5) email(2) version20(20)|
|[TS 102 657](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102657)|[RDMessage](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102657/RDMessage.asn?ref_type=heads)|33|securityDomain(2) retainedData(3) rdHeader(0) version33(33)|
|[TS 102 232-3](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-3)|[IPAccessPDU](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-3/IPAccessPDU.asn?ref_type=heads)|20|securityDomain(2) lawfulIntercept(2) li-ps(5) iPAccess(3) version20(20)|
|[TS 102 232-4](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-4)|[L2AccessPDU](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-4/L2AccessPDU.asn?ref_type=heads)|10|securityDomain(2) lawfulIntercept(2) li-ps(5) l2Access(4) version10(10)|
|[TS 103 462](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/103462)|[ILHIPDU](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/103462/ILHIPDU.asn?ref_type=heads)|2|securityDomain(2) informationHandover(4) ilhi(0) ilhiPdu(0) version2(2)|
|[TS 102 232-5](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-5)|[IPMultimediaPDU](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-5/IPMultimediaPDU.asn?ref_type=heads)|17|securityDomain(2) lawfulIntercept(2) li-ps(5) iPMultimedia(5) version17(17)|
|[TS 102 232-2](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-2)|[EmailPDU](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-2/EmailPDU.asn?ref_type=heads)|20|securityDomain(2) lawfulIntercept(2) li-ps(5) email(2) version20(20)|
|[TS 102 232-4](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-4)|[L2AccessPDU](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-4/L2AccessPDU.asn?ref_type=heads)|10|securityDomain(2) lawfulIntercept(2) li-ps(5) l2Access(4) version10(10)|
|[TS 102 232-1](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-1)|[HI1NotificationOperations](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-1/HI1NotificationOperations.asn?ref_type=heads)|7|securityDomain(2) lawfulIntercept(2) hi1(0) notificationOperations(1) version7(7)|
|[TS 102 232-1](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-1)|[LI-PS-PDU](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-1/LI-PS-PDU.asn?ref_type=heads)|40|securityDomain(2) lawfulIntercept(2) li-ps(5) genHeader(1) version40(40)|
|[TS 102 232-1](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-1)|[HI2Operations](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-1/HI2Operations.asn?ref_type=heads)|18|securityDomain(2) lawfulIntercept(2) hi2(1) version17(18)|
|[TS 102 232-6](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-6)|[PstnIsdnPDU](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102232-6/PstnIsdnPDU.asn?ref_type=heads)|6|securityDomain(2) lawfulIntercept(2) li-ps(5) pstnIsdn(6) version6(6)|
|[TS 102 657](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102657)|[RDMessage](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/102657/RDMessage.asn?ref_type=heads)|33|securityDomain(2) retainedData(3) rdHeader(0) version33(33)|
|[TS 103 462](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/103462)|[ILHIPDU](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/103462/ILHIPDU.asn?ref_type=heads)|2|securityDomain(2) informationHandover(4) ilhi(0) ilhiPdu(0) version2(2)|
|[TS 103 280](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/103280)|[Common-Parameters](https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/103280/TS_103_280.asn1?ref_type=heads)|261|common-parameters(3280) version261(261)|
+24 −10
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ class OIDArc:
            return self
        return self.hierarchy()[0]


regex = re.compile(r"^(.+?){(.*?)}", re.DOTALL)
arc_regex = re.compile(r"(.+?)\(([0-9]+?)\)")
root = Path("./")
@@ -69,7 +70,7 @@ for asn_file in asn_files:
        continue
    text = asn_file.read_text()
    spec = f"TS {asn_file.parts[0][0:3]} {asn_file.parts[0][3:]}"
    url = f"https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/{str(asn_file).replace("\\","/")}?ref_type=heads"
    url = f"https://forge.etsi.org/rep/li/schemas-definitions/-/blob/main/{str(asn_file).replace('\\', '/')}?ref_type=heads"
    matches = regex.findall(text)
    for match in matches:
        module_name = match[0].strip()
@@ -88,16 +89,29 @@ for oid in oids:
            oid_arc_sets.append(set())
        oid_arc_sets[i].add(f'{a.as_numerical()}["{a.label} ({a.value})"]\n')
        if a.child is not None:
            oid_arc_edges.add(f'{a.as_numerical()}-->{a.child.as_numerical()}\n')
            oid_arc_edges.add(f"{a.as_numerical()}-->{a.child.as_numerical()}\n")

dia_string = "# OID hierarchy\n"
dia_string += '```mermaid\ngraph TD;\n'
dia_string += "```mermaid\ngraph TD;\n"


def label_to_key(label):
    oidstr = label.partition("[")[0]
    oidlist = list(map(int, oidstr.split(".")))
    return oidlist


def edge_to_key(edge):
    oidstr = edge.replace("-->", ".-1.")
    oidlist = list(map(int, oidstr.split(".")))
    return oidlist


for level in oid_arc_sets:
    for item in level:
    for item in sorted(level, key=label_to_key):
        dia_string += item

for edge in oid_arc_edges:
for edge in sorted(oid_arc_edges, key=edge_to_key):
    dia_string += edge

dia_string += "```"