39 &
ip -> hw_address,
sizeof ip -> hw_address);
40 if (
ip->address_count)
42 ip->addresses,
sizeof(*
ip->addresses));
59 log_error (
"trace interface packet size mismatch: %ld != %d",
85 ip->address_count =
ip->address_max = 1;
100 (*dhcp_interface_discovery_hook) (
ip);
108 sin->sin_addr =
ip->addresses[0];
113 (*dhcp_interface_setup_hook) (
ip, &addr);
117 log_info (
"Listening on Trace/%s/%s%s%s",
120 ip -> hw_address.hlen - 1,
121 &
ip -> hw_address.hbuf [1]),
125 if (
strcmp (
ip -> name,
"fallback")) {
126 log_info (
"Sending on Trace/%s/%s%s%s",
129 ip -> hw_address.hlen - 1,
130 &
ip -> hw_address.hbuf [1]),
146 unsigned int from_port,
155 tip.from_port = from_port;
165 tip.index =
htonl (interface -> index);
167 iov [0].buf = (
char *)&
tip;
179 if (len <
sizeof *
tip) {
180 log_error (
"trace_input_packet: too short - %d", len);
190 log_error (
"trace_input_packet: unknown interface index %d",
196 log_error (
"trace_input_packet: no bootp packet handler.");
236 tip.index =
htonl (interface -> index);
238 iov [0].buf = (
char *)&
tip;
240 iov [1].buf = (
char *)raw;
256 if (len <
sizeof *
tip) {
257 log_error (
"trace_input_packet: too short - %d", len);
266 log_error (
"trace_input_packet: unknown interface index %d",
290 if (length !=
sizeof seed) {
291 log_error (
"trace_seed_input: wrong size (%d)", length);
char * print_hw_addr(int htype, const int hlen, const unsigned char *data) const
void trace_interface_input(trace_type_t *, unsigned, char *)
void trace_seed_input(trace_type_t *, unsigned, char *)
void trace_interface_register(trace_type_t *, struct interface_info *)
void trace_outpacket_input(trace_type_t *, unsigned, char *)
void trace_seed_stop(trace_type_t *)
void trace_inpacket_input(trace_type_t *, unsigned, char *)
void trace_interface_stop(trace_type_t *)
ssize_t trace_packet_send(struct interface_info *, struct packet *, struct dhcp_packet *, size_t, struct in_addr, struct sockaddr_in *, struct hardware *)
void trace_inpacket_stash(struct interface_info *, struct dhcp_packet *, unsigned, unsigned int, struct iaddr, struct hardware *)
void trace_outpacket_stop(trace_type_t *)
void trace_seed_stash(trace_type_t *, unsigned)
void trace_inpacket_stop(trace_type_t *)
trace_type_t * inpacket_trace
trace_type_t * outpacket_trace
ssize_t send_packet(struct interface_info *, struct packet *, struct dhcp_packet *, size_t, struct in_addr, struct sockaddr_in *, struct hardware *)
int(* dhcp_interface_discovery_hook)(struct interface_info *)
int quiet_interface_discovery
int(* dhcp_interface_setup_hook)(struct interface_info *, struct iaddr *)
struct interface_info ** interface_vector
void(* bootp_packet_handler)(struct interface_info *, struct dhcp_packet *, unsigned, unsigned int, struct iaddr, struct hardware *)
void interface_stash(struct interface_info *tptr)
void interface_snorf(struct interface_info *tmp, int ir)
void * dmalloc(size_t, const char *, int)
void dfree(void *, const char *, int)
int log_error(const char *,...) __attribute__((__format__(__printf__
int int log_info(const char *,...) __attribute__((__format__(__printf__
struct hardware hw_address
isc_result_t trace_write_packet(trace_type_t *, unsigned, const char *, const char *, int)
isc_result_t trace_write_packet_iov(trace_type_t *, int, trace_iov_t *, const char *, int)