blob: 3b0aab75d4e6618fe03586521690b37ab5cf5866 [file] [log] [blame]
Erik Kline93dd1dd2018-01-27 21:53:06 +09001/*
2 * Copyright (C) 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef NETDUTILS_SOCKETOPTION_H
18#define NETDUTILS_SOCKETOPTION_H
19
20#include <netinet/in.h>
21#include <sys/socket.h>
22#include <string>
23
24#include "netdutils/Fd.h"
25#include "netdutils/Status.h"
26
27namespace android {
28namespace netdutils {
29
30// Turn on simple "boolean" socket options.
31//
32// This is simple wrapper for options that are enabled via code of the form:
33//
34// int on = 1;
35// setsockopt(..., &on, sizeof(on));
36Status enableSockopt(Fd sock, int level, int optname);
37
38// Turn on TCP keepalives, and set keepalive parameters for this socket.
39//
40// A parameter value of zero does not set that parameter.
41//
42// Typical system defaults are:
43//
44// idleTime (in seconds)
45// $ cat /proc/sys/net/ipv4/tcp_keepalive_time
46// 7200
47//
48// numProbes
49// $ cat /proc/sys/net/ipv4/tcp_keepalive_probes
50// 9
51//
52// probeInterval (in seconds)
53// $ cat /proc/sys/net/ipv4/tcp_keepalive_intvl
54// 75
55Status enableTcpKeepAlives(Fd sock, unsigned idleTime, unsigned numProbes, unsigned probeInterval);
56
57} // namespace netdutils
58} // namespace android
59
60#endif /* NETDUTILS_SOCKETOPTION_H */