Page Menu
Home
ClusterLabs Projects
Search
Configure Global Search
Log In
Files
F2020094
cfg.c
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
cfg.c
View Options
#include "config.h"
#include "cfg.h"
#include "knet.h"
#include "utils.h"
static void free_knet_ip(struct knet_cfg_ip *knet_ip)
{
if (knet_ip->ipaddr)
free(knet_ip->ipaddr);
if (knet_ip->prefix)
free(knet_ip->prefix);
if (knet_ip)
free(knet_ip);
}
struct knet_cfg_ip *knet_get_ip(struct knet_cfg *knet_iface,
const char *ipaddr, const char *prefix,
const int create)
{
int found = 0, err = 0;
struct knet_cfg_ip *knet_ip = knet_iface->cfg_eth.knet_ip;
while (knet_ip != NULL) {
if ((!strcmp(knet_ip->ipaddr, ipaddr)) && (!strcmp(knet_ip->prefix, prefix))) {
found = 1;
break;
}
knet_ip = knet_ip->next;
}
if ((!found) && (create)) {
knet_ip = malloc(sizeof(struct knet_cfg_ip));
if (!knet_ip)
goto out_clean;
memset(knet_ip, 0, sizeof(struct knet_cfg_ip));
knet_ip->ipaddr = strdup(ipaddr);
if (!knet_ip->ipaddr) {
err = -1;
goto out_clean;
}
knet_ip->prefix = strdup(prefix);
if (!knet_ip->prefix) {
err = -1;
goto out_clean;
}
knet_ip->next = knet_iface->cfg_eth.knet_ip;
knet_iface->cfg_eth.knet_ip = knet_ip;
}
out_clean:
if (err) {
free_knet_ip(knet_ip);
knet_ip = NULL;
}
return knet_ip;
}
void knet_destroy_ip(struct knet_cfg *knet_iface, struct knet_cfg_ip *knet_ip)
{
struct knet_cfg_ip *knet_ip_tmp = knet_iface->cfg_eth.knet_ip;
struct knet_cfg_ip *knet_ip_prev = knet_iface->cfg_eth.knet_ip;
while (knet_ip_tmp != knet_ip) {
knet_ip_prev = knet_ip_tmp;
knet_ip_tmp = knet_ip_tmp->next;
}
if (knet_ip_tmp == knet_ip) {
if (knet_ip_tmp == knet_ip_prev) {
knet_iface->cfg_eth.knet_ip = knet_ip_tmp->next;
} else {
knet_ip_prev->next = knet_ip_tmp->next;
}
free_knet_ip(knet_ip);
knet_ip = NULL;
}
return;
}
struct knet_cfg_ip *knet_get_listener(struct knet_cfg *knet_iface,
const char *name,
const char *ipaddr, const char *prefix,
const int create)
{
return NULL;
}
int knet_destroy_listener(struct knet_cfg *knet_iface, char *name)
{
return 0;
}
struct knet_cfg *knet_get_iface(const char *name, int create)
{
struct knet_cfg *knet_iface = knet_cfg_head.knet_cfg;
int found = 0;
while (knet_iface != NULL) {
if (!strcmp(knet_iface->cfg_eth.name, name)) {
found = 1;
break;
}
knet_iface = knet_iface->next;
}
if ((!found) && (create)) {
knet_iface = malloc(sizeof(struct knet_cfg));
if (!knet_iface)
goto out_clean;
memset(knet_iface, 0, sizeof(struct knet_cfg));
memcpy(knet_iface->cfg_eth.name, name,
sizeof(knet_iface->cfg_eth.name));
knet_iface->cfg_ring.base_port = KNET_RING_DEFPORT;
knet_iface->next = knet_cfg_head.knet_cfg;
knet_cfg_head.knet_cfg = knet_iface;
}
out_clean:
return knet_iface;
}
void knet_destroy_iface(struct knet_cfg *knet_iface)
{
struct knet_cfg *knet_iface_tmp = knet_cfg_head.knet_cfg;
struct knet_cfg *knet_iface_prev = knet_cfg_head.knet_cfg;
while (knet_iface_tmp != knet_iface) {
knet_iface_prev = knet_iface_tmp;
knet_iface_tmp = knet_iface_tmp->next;
}
if (knet_iface_tmp == knet_iface) {
if (knet_iface_tmp == knet_iface_prev) {
knet_cfg_head.knet_cfg = knet_iface_tmp->next;
} else {
knet_iface_prev->next = knet_iface_tmp->next;
}
free(knet_iface);
}
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Mon, Dec 23, 12:30 PM (1 d, 8 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1128345
Default Alt Text
cfg.c (3 KB)
Attached To
Mode
rK kronosnet
Attached
Detach File
Event Timeline
Log In to Comment