20182018 Ericsson AB. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Socket Usage Micael Karlberg 2018-07-17 PA1 socket_usage.xml
Introduction

The socket interface (module) is basically an "thin" layer on top of the OS socket interface. It is assumed that, unless you have special needs, gen_[tcp|udp|sctp] should be sufficent.

Socket Options

Options for level otp:

Option Name Value Type Set Get Other debug boolean() yes yes none iow boolean() yes yes none controlling_process pid() yes yes none

Options for level socket:

Option Name Value Type Set Get Other acceptcon boolean() no yes none bindtodevice string() yes yes none broadcast boolean() yes yes type = dgram debug integer() yes yes may require admin capability domain domain() no yes none dontroute boolean() yes yes none keepalive boolean() yes yes none linger abort | linger() yes yes none oobinline boolean() yes yes none peek_off integer() yes yes domain = local (unix) priority integer() yes yes none protocol protocol() no yes none rcvbuf integer() yes yes none reuseaddr boolean() yes yes none reuseport boolean() yes yes domain = inet | inet6 sndbuf integer() yes yes none

Options for level ip:

Option Name Value Type Set Get Other add_membership ip_mreq() yes no none add_source_membership ip_mreq_source() yes no none block_source ip_mreq_source() yes no none drop_membership ip_mreq() yes no none drop_source_membership ip_mreq_source() yes no none minttl integer() yes yes type = raw mtu integer() no yes type = raw mtu_discover ip_pmtudisc() yes yes none multicast_all boolean() yes yes none multicast_if any | ip4_address() yes yes none multicast_loop boolean() yes yes none multicast_ttl 0..255 yes yes none nodefrag boolean() yes yes type = raw recvif boolean() yes yes type = dgram | raw recvttl boolean() yes yes type =/= stream router_alert integer() yes yes type = raw tos ip_tos() yes yes none tos integer() yes yes none unblock_source ip_mreq_source() yes no none

Options for level ipv6:

Option Name Value Type Set Get Other add_membership ipv6_mreq() yes no none drop_membership ipv6_mreq() yes no none hoplimit boolean() yes no type = dgram | raw mtu boolean() yes yes Get: Only after the socket has been connected mtu_discover ipv6_pmtudisc() yes yes none v6only boolean() yes no none

Options for level tcp:

Option Name Value Type Set Get Other congestion string() yes yes none maxseg integer() yes yes none nodelay boolean() yes yes none

Options for level udp:

Option Name Value Type Set Get Other cork boolean() yes yes none

Options for level sctp:

Option Name Value Type Set Get Other associnfo sctp_assocparams() yes yes none autoclose non_neg_integer() yes yes none disable_fragments boolean() yes yes none events sctp_event_subscribe() yes no none nodelay boolean() yes yes none