12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- .\" Copyright (c) 1994, 1996, 1997
- .\" The Regents of the University of California. All rights reserved.
- .\"
- .\" Redistribution and use in source and binary forms, with or without
- .\" modification, are permitted provided that: (1) source code distributions
- .\" retain the above copyright notice and this paragraph in its entirety, (2)
- .\" distributions including binary code include the above copyright notice and
- .\" this paragraph in its entirety in the documentation or other materials
- .\" provided with the distribution, and (3) all advertising materials mentioning
- .\" features or use of this software display the following acknowledgement:
- .\" ``This product includes software developed by the University of California,
- .\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- .\" the University nor the names of its contributors may be used to endorse
- .\" or promote products derived from this software without specific prior
- .\" written permission.
- .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
- .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- .\"
- .TH PCAP_INJECT 3PCAP "3 January 2014"
- .SH NAME
- pcap_inject, pcap_sendpacket \- transmit a packet
- .SH SYNOPSIS
- .nf
- .ft B
- #include <pcap/pcap.h>
- .ft
- .LP
- .ft B
- int pcap_inject(pcap_t *p, const void *buf, size_t size);
- int pcap_sendpacket(pcap_t *p, const u_char *buf, int size);
- .ft
- .fi
- .SH DESCRIPTION
- .B pcap_inject()
- sends a raw packet through the network interface;
- .I buf
- points to the data of the packet, including the link-layer header, and
- .I size
- is the number of bytes in the packet.
- .PP
- Note that, even if you successfully open the network interface, you
- might not have permission to send packets on it, or it might not support
- sending packets; as
- .I pcap_open_live()
- doesn't have a flag to indicate whether to open for capturing, sending,
- or capturing and sending, you cannot request an open that supports
- sending and be notified at open time whether sending will be possible.
- Note also that some devices might not support sending packets.
- .PP
- Note that, on some platforms, the link-layer header of the packet that's
- sent might not be the same as the link-layer header of the packet
- supplied to
- .BR pcap_inject() ,
- as the source link-layer address, if the header contains such an
- address, might be changed to be the address assigned to the interface on
- which the packet it sent, if the platform doesn't support sending
- completely raw and unchanged packets. Even worse, some drivers on some
- platforms might change the link-layer type field to whatever value
- libpcap used when attaching to the device, even on platforms that
- .I do
- nominally support sending completely raw and unchanged packets.
- .PP
- .B pcap_sendpacket()
- is like
- .BR pcap_inject() ,
- but it returns 0 on success, rather than returning the number of bytes
- written.
- .RB ( pcap_inject()
- comes from OpenBSD;
- .B pcap_sendpacket()
- comes from WinPcap. Both are provided for compatibility.)
- .SH RETURN VALUE
- .B pcap_inject()
- returns the number of bytes written on success and \-1 on failure.
- .PP
- .B pcap_sendpacket()
- returns 0 on success and \-1 on failure.
- .PP
- If \-1 is returned,
- .B pcap_geterr()
- or
- .B pcap_perror()
- may be called with
- .I p
- as an argument to fetch or display the error text.
- .SH SEE ALSO
- pcap(3PCAP), pcap_geterr(3PCAP)
|