#include "user_util.h"
#include "user.h"
#include "os.h"
+#include "um_malloc.h"
#define MAX_PACKET (ETH_MAX_PACKET + ETH_HEADER_OTHER)
struct request_v3 req;
int fd, n, err;
- if((pri->control = socket(AF_UNIX, SOCK_STREAM, 0)) < 0){
+ pri->control = socket(AF_UNIX, SOCK_STREAM, 0);
+ if(pri->control < 0){
printk("daemon_open : control socket failed, errno = %d\n",
errno);
return(-errno);
goto out;
}
- if((fd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0){
+ fd = socket(AF_UNIX, SOCK_DGRAM, 0);
+ if(fd < 0){
printk("daemon_open : data socket failed, errno = %d\n",
errno);
err = -errno;
req.version = SWITCH_VERSION;
req.type = REQ_NEW_CONTROL;
req.sock = *local_addr;
- n = write(pri->control, &req, sizeof(req));
+ n = os_write_file(pri->control, &req, sizeof(req));
if(n != sizeof(req)){
- printk("daemon_open : control setup request returned %d, "
- "errno = %d\n", n, errno);
+ printk("daemon_open : control setup request failed, err = %d\n",
+ -n);
err = -ENOTCONN;
- goto out;
+ goto out_free;
}
- n = read(pri->control, sun, sizeof(*sun));
+ n = os_read_file(pri->control, sun, sizeof(*sun));
if(n != sizeof(*sun)){
- printk("daemon_open : read of data socket returned %d, "
- "errno = %d\n", n, errno);
+ printk("daemon_open : read of data socket failed, err = %d\n",
+ -n);
err = -ENOTCONN;
- goto out_close;
+ goto out_free;
}
pri->data_addr = sun;
return(fd);
+ out_free:
+ kfree(sun);
out_close:
- close(fd);
+ os_close_file(fd);
out:
- close(pri->control);
+ os_close_file(pri->control);
return(err);
}
{
struct daemon_data *pri = data;
- close(pri->fd);
- close(pri->control);
- if(pri->data_addr != NULL) kfree(pri->data_addr);
- if(pri->ctl_addr != NULL) kfree(pri->ctl_addr);
- if(pri->local_addr != NULL) kfree(pri->local_addr);
+ os_close_file(pri->fd);
+ pri->fd = -1;
+ os_close_file(pri->control);
+ pri->control = -1;
+
+ kfree(pri->data_addr);
+ pri->data_addr = NULL;
+ kfree(pri->ctl_addr);
+ pri->ctl_addr = NULL;
+ kfree(pri->local_addr);
+ pri->local_addr = NULL;
}
int daemon_user_write(int fd, void *buf, int len, struct daemon_data *pri)
return(mtu);
}
-struct net_user_info daemon_user_info = {
+const struct net_user_info daemon_user_info = {
.init = daemon_user_init,
.open = daemon_open,
.close = NULL,