title: understand 'struct proto' and 'struct proto_ops' in the kernel
body: <p>I'm studying the tcp/ip implementation, specifically sockets layer, and there's something I don't quite understand about a few structure.</p>
  
  <p>I know that 'struct proto_ops' is used to define the operations, e.g. bind/connect/accept, and every socket has a specified proto_ops.</p>
  
  <p>On the other hand, 'struct proto' defines new protocol and the structure also defines function pointers for accept/bind/setsockopt/getsockopt/etc. methods.</p>
  
  <p>I read lots of code in $linux/net/ and I don't see where does it use the operations defined via 'struct proto', so I'm not sure how these methods are being used in the code?</p>
  
  <p>Could someone clarify this for me?
  Thanks.</p>