Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 54807
b: refs/heads/master
c: 7d98230
h: refs/heads/master
i:
  54805: d8b185c
  54803: 5e8ba78
  54799: b316644
v: v3
  • Loading branch information
Jeff Dike authored and Linus Torvalds committed May 8, 2007
1 parent 980c382 commit 3441435
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 26 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a436ed9c5106b41606cbb55ab3b28389fe8ae04f
refs/heads/master: 7d98230a73c21b4d0cee9c3aca38190d215e0e39
15 changes: 9 additions & 6 deletions trunk/arch/um/drivers/net_kern.c
Original file line number Diff line number Diff line change
Expand Up @@ -316,12 +316,14 @@ static void setup_etheraddr(char *str, unsigned char *addr, char *name)
}
if (!is_local_ether_addr(addr)) {
printk(KERN_WARNING
"Warning: attempt to assign a globally valid ethernet address to a "
"device\n");
printk(KERN_WARNING "You should better enable the 2nd rightmost bit "
"in the first byte of the MAC, i.e. "
"%02x:%02x:%02x:%02x:%02x:%02x\n",
addr[0] | 0x02, addr[1], addr[2], addr[3], addr[4], addr[5]);
"Warning: attempt to assign a globally valid ethernet "
"address to a device\n");
printk(KERN_WARNING "You should better enable the 2nd "
"rightmost bit in the first byte of the MAC,\n");
printk(KERN_WARNING "i.e. %02x:%02x:%02x:%02x:%02x:%02x\n",
addr[0] | 0x02, addr[1], addr[2], addr[3], addr[4],
addr[5]);
goto random;
}
return;

Expand Down Expand Up @@ -478,6 +480,7 @@ static void eth_configure(int n, void *init, char *mac,
(*transport->user->remove)(&lp->user);
out_unregister:
platform_device_unregister(&device->pdev);
return; /* platform_device_unregister frees dev and device */
out_free_netdev:
free_netdev(dev);
out_free_device:
Expand Down
25 changes: 16 additions & 9 deletions trunk/arch/um/drivers/pcap_kern.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,25 @@ void pcap_init(struct net_device *dev, void *data)
ppri->promisc = init->promisc;
ppri->optimize = init->optimize;
ppri->filter = init->filter;

printk("pcap backend, host interface %s\n", ppri->host_if);
}

static int pcap_read(int fd, struct sk_buff **skb,
static int pcap_read(int fd, struct sk_buff **skb,
struct uml_net_private *lp)
{
*skb = ether_adjust_skb(*skb, ETH_HEADER_OTHER);
if(*skb == NULL) return(-ENOMEM);
return(pcap_user_read(fd, skb_mac_header(*skb),
if(*skb == NULL)
return -ENOMEM;

return pcap_user_read(fd, skb_mac_header(*skb),
(*skb)->dev->mtu + ETH_HEADER_OTHER,
(struct pcap_data *) &lp->user));
(struct pcap_data *) &lp->user);
}

static int pcap_write(int fd, struct sk_buff **skb, struct uml_net_private *lp)
{
return(-EPERM);
return -EPERM;
}

static const struct net_kern_info pcap_kern_info = {
Expand All @@ -65,12 +69,12 @@ int pcap_setup(char *str, char **mac_out, void *data)
.optimize = 0,
.filter = NULL });

remain = split_if_spec(str, &host_if, &init->filter,
remain = split_if_spec(str, &host_if, &init->filter,
&options[0], &options[1], NULL);
if(remain != NULL){
printk(KERN_ERR "pcap_setup - Extra garbage on "
"specification : '%s'\n", remain);
return(0);
return 0;
}

if(host_if != NULL)
Expand All @@ -87,10 +91,13 @@ int pcap_setup(char *str, char **mac_out, void *data)
init->optimize = 1;
else if(!strcmp(options[i], "nooptimize"))
init->optimize = 0;
else printk("pcap_setup : bad option - '%s'\n", options[i]);
else {
printk("pcap_setup : bad option - '%s'\n", options[i]);
return 0;
}
}

return(1);
return 1;
}

static struct transport pcap_transport = {
Expand Down
23 changes: 13 additions & 10 deletions trunk/arch/um/drivers/pcap_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "pcap_user.h"
#include "user.h"
#include "um_malloc.h"
#include "kern_constants.h"

#define MAX_PACKET (ETH_MAX_PACKET + ETH_HEADER_OTHER)

Expand All @@ -26,8 +27,8 @@ static int pcap_user_init(void *data, void *dev)

p = pcap_open_live(pri->host_if, MAX_PACKET, pri->promisc, 0, errors);
if(p == NULL){
printk("pcap_user_init : pcap_open_live failed - '%s'\n",
errors);
printk(UM_KERN_ERR "pcap_user_init : pcap_open_live failed - "
"'%s'\n", errors);
return -EINVAL;
}

Expand All @@ -48,29 +49,29 @@ static int pcap_open(void *data)
if(pri->filter != NULL){
err = dev_netmask(pri->dev, &netmask);
if(err < 0){
printk("pcap_open : dev_netmask failed\n");
printk(UM_KERN_ERR "pcap_open : dev_netmask failed\n");
return -EIO;
}

pri->compiled = um_kmalloc(sizeof(struct bpf_program));
if(pri->compiled == NULL){
printk("pcap_open : kmalloc failed\n");
printk(UM_KERN_ERR "pcap_open : kmalloc failed\n");
return -ENOMEM;
}

err = pcap_compile(pri->pcap,
(struct bpf_program *) pri->compiled,
pri->filter, pri->optimize, netmask);
if(err < 0){
printk("pcap_open : pcap_compile failed - '%s'\n",
pcap_geterr(pri->pcap));
printk(UM_KERN_ERR "pcap_open : pcap_compile failed - "
"'%s'\n", pcap_geterr(pri->pcap));
return -EIO;
}

err = pcap_setfilter(pri->pcap, pri->compiled);
if(err < 0){
printk("pcap_open : pcap_setfilter failed - '%s'\n",
pcap_geterr(pri->pcap));
printk(UM_KERN_ERR "pcap_open : pcap_setfilter "
"failed - '%s'\n", pcap_geterr(pri->pcap));
return -EIO;
}
}
Expand All @@ -85,7 +86,8 @@ static void pcap_remove(void *data)
if(pri->compiled != NULL)
pcap_freecode(pri->compiled);

pcap_close(pri->pcap);
if(pri->pcap != NULL)
pcap_close(pri->pcap);
}

struct pcap_handler_data {
Expand Down Expand Up @@ -114,7 +116,8 @@ int pcap_user_read(int fd, void *buffer, int len, struct pcap_data *pri)

n = pcap_dispatch(pri->pcap, 1, handler, (u_char *) &hdata);
if(n < 0){
printk("pcap_dispatch failed - %s\n", pcap_geterr(pri->pcap));
printk(UM_KERN_ERR "pcap_dispatch failed - %s\n",
pcap_geterr(pri->pcap));
return -EIO;
}
else if(n == 0)
Expand Down

0 comments on commit 3441435

Please sign in to comment.