OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [net/] [sock_linux.go] - Rev 848

Go to most recent revision | Compare with Previous | Blame | View Log

// Copyright 2009 The Go Authors.  All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Sockets for Linux

package net

import "syscall"

func maxListenerBacklog() int {
        fd, err := open("/proc/sys/net/core/somaxconn")
        if err != nil {
                return syscall.SOMAXCONN
        }
        defer fd.close()
        l, ok := fd.readLine()
        if !ok {
                return syscall.SOMAXCONN
        }
        f := getFields(l)
        n, _, ok := dtoi(f[0], 0)
        if n == 0 || !ok {
                return syscall.SOMAXCONN
        }
        return n
}

func listenerSockaddr(s, f int, la syscall.Sockaddr, toAddr func(syscall.Sockaddr) Addr) (syscall.Sockaddr, error) {
        a := toAddr(la)
        if a == nil {
                return la, nil
        }
        switch v := a.(type) {
        case *UDPAddr:
                if v.IP.IsMulticast() {
                        err := setDefaultMulticastSockopts(s)
                        if err != nil {
                                return nil, err
                        }
                        switch f {
                        case syscall.AF_INET:
                                v.IP = IPv4zero
                        case syscall.AF_INET6:
                                v.IP = IPv6unspecified
                        }
                        return v.sockaddr(f)
                }
        }
        return la, nil
}

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.