Sponsored Content
Full Discussion: The third argument of bind()
Special Forums IP Networking The third argument of bind() Post 302527628 by vistastar on Friday 3rd of June 2011 11:27:32 PM
Old 06-04-2011
The third argument of bind()

Code:
       int bind(int socket, const struct sockaddr *address,
              socklen_t address_len);

Man page says it specifies the length of the sockaddr structure pointed to by the address argument.

But why bind() can't figure out the length itself, since the first member (eg:AF_INET or AF_INET6...) of sockaddr structure implies the actual structure which contains it. So I think bind() can figure out the length of the sockaddr structure by inspecting address->sa_family.

You may say that, these strctures are diffrent in different OS. But the implemnetation of bind() can also be designed for diffrent OS. The length of these structures are constant in the same OS.

Who can explain it?

Thx!!!

Last edited by vistastar; 06-04-2011 at 12:41 AM..
 

9 More Discussions You Might Find Interesting

1. AIX

Bind and AIX

I am attempting to set up bind on an AIX 5.3 machine. I ahve created a named.conf, db.cache (for root domain and hint file) and a db.domainname file for the host entries. However, when I set my pc to use the AIX box as it's dns server, I can not resolve names. Is there anything obvious maybe I... (0 Replies)
Discussion started by: zuessh
0 Replies

2. UNIX for Dummies Questions & Answers

How to find the last argument in a argument line?

How to find the last argument in a argument line? (4 Replies)
Discussion started by: nehagupta2008
4 Replies

3. UNIX for Dummies Questions & Answers

Dns/bind

Hi, Does anyone know anything about DNS/BIND? I need to tell my dns for every sub-domain foward on to my main domain.... so *.example.com gets sent to exmaple.com. Any ideas. I've looked at bind on my machine and theres about 10 files....i just don't know where to put the rule or exactly... (2 Replies)
Discussion started by: elduderino
2 Replies

4. Shell Programming and Scripting

get positive number n as argument script must calculate the factorial of its argument

Can someone please help me with this SHELL script? I need to create a script that gets a positive number n as an argument. The script must calculate the factorial of its argument. In other words, it must calculate n!=1x2x3x...xn. Note that 0!=1. Here is a start but I have no clue how to... (3 Replies)
Discussion started by: I-1
3 Replies

5. Shell Programming and Scripting

Cannot compare argument in if statement in csh/grep command if argument starts with “-“

If ($argv == “-debug”) then Echo “in loop” Endif But this is not working. If I modify this code and remove “-“, then it works. Similarly I am getting problem using grep command also Grep “-debug” Filename Can someone please help me on how to resolve these... (1 Reply)
Discussion started by: sarbjit
1 Replies

6. Shell Programming and Scripting

Make script that run with argument if not run from configuration file argument

Hello, Is there any method thorugh which script can take argument if pass otherwise if argument doesn't pass then it takes the argument from the configuration file i.e I am workiing on a script which will run through crontab and the script will chekout the code ,zip and copy to the... (3 Replies)
Discussion started by: rohit22hamirpur
3 Replies

7. UNIX for Advanced & Expert Users

Error:--test: argument expected--Even though i give an argument.

Hi All, I am running the script VBoxManage list vms |sed 's/"//g' | cut -d " " -f1 > har1out.mytxt result=`cat har1out.mytxt | grep $1' echo $result echo $1 { if then echo pass else echo fail fi (2 Replies)
Discussion started by: harsha85
2 Replies

8. UNIX for Dummies Questions & Answers

Can't bind to IP

When you get the message can't bind to ip already in use. is there a command to search to see everything that is using that IP? I've already check the host and hostname files (2 Replies)
Discussion started by: mchelle_99
2 Replies

9. UNIX for Advanced & Expert Users

Bind

Hi All I need to do bind of exiting filesystem to new storage allocated mount --bind /prod/OpenCSS /var/lib/test echo "/prod/OpenCSS /var/lib/pgsql bind bind 0 0" >> /etc/fstab will this command just work ? (2 Replies)
Discussion started by: anil529
2 Replies
bind(2) 							System Calls Manual							   bind(2)

NAME
bind - Binds a name to a socket SYNOPSIS
#include <sys/socket.h> int bind ( int socket, const struct sockaddr *address, socklen_t address_len ); [XNS4.0] The definition of the accept() function in XNS4.0 uses a a size_t data type instead of socklen_t data type as specified in XNS5.0 (the previous definition). [Tru64 UNIX] The following definition of the bind() function does not conform to current standards and is supported only for backward compatibility (see standards(5)): int bind ( int socket, struct sockaddr *address, int address_len ); STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: bind(): XNS5.0 Refer to the standards(5) reference page for more information about industry standards and associated tags. PARAMETERS
Specifies the socket descriptor of the socket to be bound. Points to a sockaddr structure, the format of which is determined by the domain and by the behavior requested for the socket. The sockaddr structure is an overlay for a sockaddr_in, sockaddr_un, or sockaddr_ns struc- ture, depending on which of the supported address families is active. [Tru64 UNIX] If the compile-time option _SOCKADDR_LEN is defined before the sys/socket.h header file is included, the sockaddr structure takes 4.4BSD behavior, with a field for specifying the length of the socket address. Otherwise, the default 4.3BSD sock- addr structure is used, with the length of the socket address assumed to be 14 bytes or less. If _SOCKADDR_LEN is defined, the 4.3BSD sockaddr structure is defined with the name osockaddr. Specifies the length of the sockaddr structure pointed to by the address parameter. DESCRIPTION
The bind() function assigns an address to an unnamed socket. Sockets created with the socket() function are unnamed; they are identified only by their address family. A bind that references a UNIX domain socket (AF_UNIX) causes a socket file to be created in the filesystem. By default, the sockets are created, like regular files and directories, with the following mode set: 0777 &~ umask If the insecure_bind kernel tuning parameter is set to a value other than zero (0), umask is ignored and new UNIX domain sockets are cre- ated with mode 0777 only. The insecure_bind parameter can be set by using either the dxkerneltuner utility or the /sbin/sysconfigdb util- ity. See System Configuration and Tuning for more information on tuning parameters. An application program can retrieve the assigned socket name with the getsockname() function. The socket in use may require that the process have appropriate privileges to use the bind() function. Security Note [Tru64 UNIX] If you have enhanced security installed on your system, the bind() function operates as follows: A bind that references a UNIX domain socket causes a socket file to be created in the filesystem. The access checks that are made are identical to those made by the open() function when creating a new file. End Security Note RETURN VALUES
Upon successful completion, the bind() function returns a value of 0 (zero). If the bind() function fails, a value of -1 is returned and errno is set to indicate the error. ERRORS
If the bind() function fails, errno may be set to one of the following values: The requested address is protected and the current user does not have permission to access it. For an AF_UNIX socket, a component of the path prefix is protected and you cannot search it, or the requested name requires writing in a directory with a mode that denies write permission. The specified address is already in use. The specified address is not available from the local machine. The specified address is invalid for the address family of the specified socket. The socket parameter is not valid. For an AF_UNIX socket, the address argument is a null pointer. The address parameter is not in a readable part of the user address space. The socket is already bound to an address and the protocol does not support binding to a new address; the socket has been shut down; or the length or the address_len argument is invalid for the address family. For an AF_UNIX socket, an I/O error occurred. The socket is already connected. The address argument is a null pointer. For an AF_UNIX socket, too many symbolic links were encountered in translating the pathname in address. A component of the pathname exceeded NAME_MAX characters, or an entire pathname exceeded PATH_MAX characters. Insufficient resources were available in the system to complete the call. For an AF_UNIX socket, a component of the pathname does not name an existing file or the pathname is an empty string. The available STREAMS resources were insufficient for the operation to complete. For an AF_UNIX socket, a component of the path prefix of the pathname in address is not a directory. The socket parameter refers to a file, not a socket. The socket type of the speci- fied socket does not support binding to an address. For an AF_UNIX socket, the name would reside on a read-only filesystem. RELATED INFORMATION
Functions: connect(2), getsockname(2), listen(2), socket(2). Standards: standards(5). Network Programmer's Guide System Configuration and Tuning delim off bind(2)
All times are GMT -4. The time now is 06:40 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy