Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
net_ioctl [2018/09/03 16:34] – [sock_ioctl()] rpjdaynet_ioctl [2018/09/04 10:31] (current) – [send_ioctl()] rpjday
Line 30: Line 30:
 int send_ioctl(struct cmd_context *ctx, void *cmd) int send_ioctl(struct cmd_context *ctx, void *cmd)
 { {
-        ctx->ifr.ifr_data = cmd;+        ctx->ifr.ifr_data = cmd;        // command-specific structure
         return ioctl(ctx->fd, SIOCETHTOOL, &ctx->ifr);         return ioctl(ctx->fd, SIOCETHTOOL, &ctx->ifr);
 } }
 #endif #endif
 </code> </code>
 +
 +QUESTION: What is returned in ifreq%%->%%cmd?
  
 ==== struct cmd_context ==== ==== struct cmd_context ====
Line 132: Line 134:
 ==== sock_ioctl() ==== ==== sock_ioctl() ====
  
-Also from ''net/socket.c'' -- anything related so ''SIOCDEVPRIVATE'' is seriously (see [[https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/sockios.h#L135|here]]):+Also from ''net/socket.c'' -- anything related to ''SIOCDEVPRIVATE'' is seriously deprecated (see [[https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/sockios.h#L135|here]]):
  
 <code> <code>
Line 156: Line 158:
                                 return -EFAULT;                                 return -EFAULT;
         } else         } else
 +</code>
 +
 +This reflects wireless extensions, which should not be relevant:
 +
 +<code>
 #ifdef CONFIG_WEXT_CORE #ifdef CONFIG_WEXT_CORE
         if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) {         if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) {
Line 161: Line 168:
         } else         } else
 #endif #endif
 +</code>
 +
 +Finally, this is where we should end up:
 +
 +<code>
                 switch (cmd) {                 switch (cmd) {
                 case FIOSETOWN:                 case FIOSETOWN:
  • net_ioctl.1535992467.txt.gz
  • Last modified: 2018/09/03 16:34
  • by rpjday