Changeset ebafa5d


Ignore:
Timestamp:
01/07/13 11:55:20 (9 years ago)
Author:
Shane Alcock <salcock@…>
Branches:
4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, getfragoff, help, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
Children:
c0a5a50
Parents:
4c484de
Message:
  • How about we give some helpful error messages if a sendto call fails when using int: or ring: for output?
File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/format_linux.c

    rf19c3e9 rebafa5d  
    10901090{
    10911091        struct sockaddr_ll hdr;
     1092        int ret = 0;
    10921093
    10931094        if (trace_get_link_type(packet) == TRACE_TYPE_NONDATA)
     
    11041105        /* This is pretty easy, just send the payload using sendto() (after
    11051106         * setting up the sll header properly, of course) */
    1106         return sendto(DATAOUT(trace)->fd,
     1107        ret = sendto(DATAOUT(trace)->fd,
    11071108                        packet->payload,
    11081109                        trace_get_capture_length(packet),
    11091110                        0,
    11101111                        (struct sockaddr*)&hdr, (socklen_t)sizeof(hdr));
     1112
     1113        if (ret < 0) {
     1114                trace_set_err_out(trace, errno, "sendto failed");
     1115        }
     1116
     1117        return ret;
    11111118
    11121119}
     
    11441151                         * to large so try issue another send command
    11451152                         */
    1146                         sendto(DATAOUT(trace)->fd,
     1153                        ret = sendto(DATAOUT(trace)->fd,
    11471154                                NULL,
    11481155                                0,
     
    11501157                                (void *) &DATAOUT(trace)->sock_hdr,
    11511158                                sizeof(DATAOUT(trace)->sock_hdr));
     1159                        if (ret < 0) {
     1160                                trace_set_err_out(trace, errno,
     1161                                                "sendto after timeout failed");
     1162                                return -1;
     1163                        }
    11521164        }
    11531165       
     
    11731185        DATAOUT(trace)->queue %= TX_MAX_QUEUE;
    11741186        if(DATAOUT(trace)->queue == 0){
    1175                 sendto(DATAOUT(trace)->fd,
    1176                         NULL,
    1177                         0,
    1178                         MSG_DONTWAIT,
    1179                         (void *) &DATAOUT(trace)->sock_hdr,
    1180                         sizeof(DATAOUT(trace)->sock_hdr));
     1187                ret = sendto(DATAOUT(trace)->fd,
     1188                                NULL,
     1189                                0,
     1190                                MSG_DONTWAIT,
     1191                                (void *) &DATAOUT(trace)->sock_hdr,
     1192                                sizeof(DATAOUT(trace)->sock_hdr));
     1193                if (ret < 0) {
     1194                        trace_set_err_out(trace, errno, "sendto failed");
     1195                        return -1;
     1196                }
    11811197        }
    11821198        return header->tp_len;
Note: See TracChangeset for help on using the changeset viewer.