May 15, 2003 RMP 4 hp300

### NAME

rmp - HP Remote Maintenance Protocol Family

### SYNOPSIS

options RMP
```int` socket(```AF_RMP``, SOCK_RAW``, proto`)

### DESCRIPTION

Hewlett-Packard's Remote Maintenance Protocol family is a collection of protocols layered atop IEEE 802.3. The current implementation of the RMP family provides protocol support only for the ```SOCK_RAW` socket type. As a result, sendto(2) and recvfrom(2) must be used to send and receive RMP packets.

The format of an RMP packet is defined in the include file <```netrmp/rmp_var.h`>. The RMP packet arrives encapsulated in an (HP extended) IEEE 802.2 packet. The IEEE 802.2 packet is preceded by the kernel address of an ifnet struct which is used to `route' a packet out the same interface it arrived on. Outgoing packets are encapsulated in a standard IEEE 802.3 packet, while incoming packets have this information stripped away.

### ADDRESSING

RMP (IEEE 802.3) addresses are 6 octets in length (48 bytes). Sockets in the Remote Maintenance Protocol family use the following addressing structure:

  `

      struct sockaddr_rmp {
              short           srmp_family;
              u_char          srmp_dhost[6];
      };

  `

### PROTOCOLS

The RMP protocol family supported by the operating system currently consists of the Boot Protocol (proto=```RMPPROTO_BOOT`). Unfortunately, we have no documentation on the Remote Maintenance Protocol and only sketchy information about the Boot Protocol.

### SEE ALSO

bind(2), recvfrom(2), sendto(2), socket(2), intro(4), rbootd(8) (see```/usr/share/doc/psd/20.ipctut`) (see```/usr/share/doc/psd/21.ipc`)

### HISTORY

The rmp protocol interface

### BUGS

- The HP ROM uses IEEE 802.3 (as opposed to Ethernet) packets. While the kernel heuristically recognizes these packets, a more general mechanism for doing so should be provided.

- The HP ROM uses a multicast address when first trying to locate boot servers. While the Ethernet [sic] board is programmed to recognize this particular multicast address (9:0:9:0:0:4), a more general mechanism for doing so should be provided.

- The kernel supports only RAW sockets for the RMP protocol. This is either a bug or a feature, since the kernel is smaller at the price of greater complexity in the server.

- There is no support for bind(2)'ing an address in the RMP domain. Something like an ```RMPADDR_ANY` should be provided to prevent more than one rbootd(8) server from running at the same time.