ddp(7)





NAME

       ddp - Linux AppleTalk protocol implementation


SYNOPSIS

       #include <sys/socket.h>
       #include <netatalk/at.h>

       ddp_socket = socket(PF_APPLETALK, SOCK_DGRAM, 0);
       raw_socket = socket(PF_APPLETALK, SOCK_RAW, protocol);


DESCRIPTION

       Linux  implements  the  Appletalk  protocols  described in
       Inside Appletalk.  Only the DDP layer and AARP are present
       in  the  kernel.  They  are  designed  to  be used via the
       netatalk  protocol  libraries.  This  page  documents  the
       interface  for those who wish or need to use the DDP layer
       directly.

       The communication between Appletalk and the  user  program
       works  using  a  BSD-compatible socket interface. For more
       information on sockets, see socket(7).

       An AppleTalk socket is created by  calling  the  socket(2)
       function with a PF_APPLETALK socket family argument. Valid
       socket types are  SOCK_DGRAM  to  open  a  ddp  socket  or
       SOCK_RAW  to open a raw socket.  protocol is the Appletalk
       protocol to be received or sent.  For  SOCK_RAW  you  must
       specify ATPROTO_DDP.

       Raw sockets may be only opened by a process with effective
       user id 0 or when the process has the CAP_NET_RAW capabil­
       ity.


ADDRESS FORMAT

       An Appletalk socket address is defined as a combination of
       a network number, a node number, and a port number.

              struct at_addr {
                  u_short         s_net;
                  u_char          s_node;
              };

              struct sockaddr_atalk {
                  sa_family_t     sat_family; /* address family */
                  u_char          sat_port;   /* port */
                  struct at_addr  sat_addr;   /* net/node */
              };

       sat_family is always set to AF_APPLETALK.   sat_port  con­
       tains  the  port.  The port numbers below 129 are known as
       reserved ports.  Only processes with the effective user id
       0  or  the  CAP_NET_BIND_SERVICE capability may bind(2) to
       these sockets.  sat_addr is the  host  address.   The  net
       member  of  struct  at_addr  contains  the host network in



       network byte order.  The value of AT_ANYNET is a  wildcard
       and  also  implies  "this  network."   The  node member of
       struct at_addr contains the host node number.   The  value
       of  AT_ANYNODE is a wildcard and also implies "this node."
       The value  of  ATADDR_BCAST  is  a  link  local  broadcast
       address.


SOCKET OPTIONS

       No protocol-specific socket options are supported.


SYSCTLS

       IP  supports  a  sysctl interface to configure some global
       AppleTalk parameters.  The  sysctls  can  be  accessed  by
       reading or writing the /proc/sys/net/atalk/* files or with
       the sysctl(2) interface.

       aarp-expiry-time
              The time interval (in seconds) before an AARP cache
              entry expires.

       aarp-resolve-time
              The time interval (in seconds) before an AARP cache
              entry is resolved.

       aarp-retransmit-limit
              The number of  retransmissions  of  an  AARP  query
              before the node is declared dead.

       aarp-tick-time
              The  timer  rate (in seconds) for the timer driving
              AARP.

       The default values  match  the  specification  and  should
       never need to be changed.



IOCTLS

       All ioctls described in socket(7) apply to ddp.




NOTES

       Be  very  careful with the SO_BROADCAST option - it is not
       privileged in Linux. It is easy to  overload  the  network
       with careless sending to broadcast addresses.


VERSIONS

       Appletalk  is supported by Linux 2.0 or higher. The sysctl
       interface is new in Linux 2.2.


ERRORS

       ENOTCONN
              The  operation  is  only  defined  on  a  connected
              socket, but the socket wasn't connected.



       EINVAL Invalid argument passed.

       EMSGSIZE
              Datagram is bigger than the DDP MTU.

       EACCES The  user tried to execute an operation without the
              necessary permissions. These include sending  to  a
              broadcast address without having the broadcast flag
              set, and trying to bind to a reserved port  without
              effective user id 0 or CAP_NET_BIND_SERVICE.

       EADDRINUSE
              Tried to bind to an address already in use.

       ENOMEM and ENOBUFS
              Not enough memory available.

       ENOPROTOOPT and EOPNOTSUPP
              Invalid socket option passed.

       EPERM  User  doesn't have permission to set high priority,
              make a configuration change, or send signals to the
              requested process or group,

       EADDRNOTAVAIL
              A  non-existent  interface  was  requested  or  the
              requested source address was not local.

       EAGAIN Operation on a nonblocking socket would block.

       ESOCKTNOSUPPORT
              The socket was unconfigured, or an  unknown  socket
              type was requested.

       EISCONN
              connect(2)  was  called  on  an  already  connected
              socket.

       EALREADY
              A connection operation on a non-blocking socket  is
              already in progress.

       ECONNABORTED
              A connection was closed during an accept(2).

       EPIPE  The connection was unexpectedly closed or shut down
              by the other end.

       ENOENT SIOCGSTAMP was called on a socket where  no  packet
              arrived.

       EHOSTUNREACH
              No  routing  table  entry  matches  the destination
              address.



       ENODEV Network device not  available  or  not  capable  of
              sending IP.

       ENOPKG A kernel subsystem was not configured.


COMPATIBILITY

       The  basic  AppleTalk  socket interface is compatible with
       netatalk on BSD-derived systems. Many BSD systems fail  to
       check SO_BROADCAST when sending broadcast frames; this can
       lead to compatibility problems.

       The raw socket mode is unique to Linux and exists to  sup­
       port  the alternative CAP package and AppleTalk monitoring
       tools more easily.


BUGS

       There are too many inconsistent error values.

       The ioctls used to configure routing tables, devices, AARP
       tables and other devices are not yet described.


SEE ALSO

       sendmsg(2), recvmsg(2), socket(7)


































Man(1) output converted with man2html