/
BudarinSA
/
gobgp
Обзор
Документация
Войти
/
BudarinSA
/
gobgp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
internal/pkg/netutils/utils.go
60 строк
2 KB
Timur Aitov
feat(netutils): add SetUDPTTLSockopt and SetReuseAddrSockopt helpers
25 апр 2026, 01:18
25 апр 2026, 01:18
4d098c9
Код
Авторство
О чём код?
// Copyright (C) 2016 Nippon Telegraph and Telephone Corporation. // // 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. //go:build !windows package netutils import ( "syscall" ) func setSockOptInt(sc syscall.RawConn, level, name, value int) error { var opterr error fn := func(s uintptr) { opterr = syscall.SetsockoptInt(int(s), level, name, value) } err := sc.Control(fn) if opterr == nil { return err } return opterr } func setSockOptIpTtl(sc syscall.RawConn, family int, value int) error { level := syscall.IPPROTO_IP name := syscall.IP_TTL if family == syscall.AF_INET6 { level = syscall.IPPROTO_IPV6 name = syscall.IPV6_UNICAST_HOPS } return setSockOptInt(sc, level, name, value) } func setSockOptTcpMss(sc syscall.RawConn, family int, value uint16) error { level := syscall.IPPROTO_TCP name := syscall.TCP_MAXSEG return setSockOptInt(sc, level, name, int(value)) } func setSockOptIpTos(sc syscall.RawConn, family int, value uint8) error { level := syscall.IPPROTO_IP name := syscall.IP_TOS if family == syscall.AF_INET6 { level = syscall.IPPROTO_IPV6 name = syscall.IPV6_TCLASS } return setSockOptInt(sc, level, name, int(value)) }