NAME
rmp —
HP Remote Maintenance Protocol
Family
SYNOPSIS
options RMP
#include <sys/types.h>
#include <sys/socket.h>
#include <netrmp/rmp.h>
#include <netrmp/rmp_var.h>
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),
hp300/intro(4),
rbootd(8)
Stuart Sechrest, An
Introductory 4.4BSD Interprocess Communication Tutorial. (see
/usr/share/doc/psd/20.ipctut)
Samuel J. Leffler,
Robert S. Fabry, William N.
Joy, Phil Lapsley, Steve
Miller, and Chris Torek,
Advanced 4.4BSD IPC Tutorial. (see
/usr/share/doc/psd/21.ipc)
HISTORY
The
rmp protocol interface currently under development.
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.