XMP (X/Open Management Protocols Application Program Interface) ist ein API, mit dem Anwendungen auf die Management-Protokolle CMIP (bzw. CMOT bei NetView) und SNMP zugreifen können. Die Parameter für die XMP-Funktionsaufrufe werden mit XOM (X/Open OSI-Abstract-Data-Manipulation API) erstellt, einem API für die Repräsentation von ASN.1-Datentypen in C.
Die Funktionsaufrufe von XMP unterstützen sowohl die CMIP-Operationen, als auch die von SNMP:
| CMIP Operation | SNMP Operation | XMP Funktionsaufruf |
| Action | - | mp_action_req(), mp_action_rsp() |
| Cancel get | - | mp_cancel_get_req(), mp_cancel_get_rsp() |
| Create | - | mp_create_req(), mp_create_rsp() |
| Delete | - | mp_delete_req(), mp_delete_rsp() |
| Get | Get | mp_get_req(), mp_get_rsp() |
| Set | Set | mp_set_req(), mp_set_rsp() |
| Notification | Trap | mp_event_report_req(), mp_event_report_rsp() |
| - | Get next | mp_get_next_req(), mp_get_next_rsp() |
Außer den Protokolloperationen hat XMP noch zusätzliche Funktionsaufrufe zum Einrichten und Verwalten von Kommunikationsbeziehungen. Abbildung 3.4 zeigt eine typische Umgebung für XMP-basierte Managementanwendungen, die (bei NetView über den Postmaster-Dämon) auf SNMP- und CMOT-Protokollstacks zugreifen.
Das XMP-API ist nicht protokollunabhängig. Es können zwar die gleichen Funktionsaufrufe verwendet werden, um mit SNMP- und CMIP-Agenten zu kommunizieren, aber es werden je nach Managementprotokoll unterschiedliche Funktionsargumente gebraucht. Eine Managementanwendung muß also wissen, welches Protokoll ein bestimmter Agent unterstützt.
Die Argumente für die XMP-Funktionsaufrufe werden in Form von sogenannten OM-Objekten erzeugt. Bei diesen Objekten handelt es sich um Repräsentationen von ASN.1-Datentypen in C, die mit XOM erstellt werden. OM-Objekte setzen sich aus Attributen zusammen und unterstützen Vererbung. Z.B. gibt es eine OM-Klasse GET-ARGUMENT mit zwei Subklassen: MP_C_SNMP_GET_ARGUMENT und MP_C_CMIS_GET_ARGUMENT.
OM-Klassendefinitionen werden in sogenannten Packages zusammengefaßt. Es gibt zwei Arten von Packages:
XMP/XOM wird für SNMP-basierte Managementanwendungen aufgrund seiner großen Komplexität nur selten verwendet. Es ist jedoch momentan das einzige standardisierte API für CMIP.
Die Komplexität ist auch der Hauptgrund, warum es nicht sinnvoll ist, XMP/XOM als API für einen ORB zu verwenden (vgl. Kapitel 4).